it-swarm.com.de

Benutzerdefiniertes Kategoriesuchfeld für WordPress

Ich habe Plugins gesehen, die der standardmäßigen WordPress-Suchleiste eine zusätzliche Dropdown-Liste mit Kategorien hinzufügen, aber das hilft mir überhaupt nicht.

Meine Website enthält viele Beiträge in vielen Kategorien, und ich möchte ein großes Suchfeld oben auf jeder Kategorieseite mit dem Titel "Suche [Katzenname]:" hinzufügen. Dieses Suchfeld durchsucht nur die Beiträge in der Kategorie, die sie gerade betrachten.

Um zu vermeiden, dass ich Code platzieren muss (und eine Kategorieseitenvorlage für jede Kategorie, die ich habe, erstelle), wäre es brillant, wenn dies irgendwie dynamisch erstellt werden könnte. Was ich also erreichen möchte, ist Folgendes:

  1. Dynamisch erstellter Titel der Suchleiste
  2. Ein Suchfeld, das nur in der Kategorie sucht, die der Benutzer gerade anzeigt

Ich habe das:

<form method="get" id="search form" action="/">
<div>
<input type="text" value="" name="s" id="s" />
<input type="hidden" value="22" name="cat" id="africa" />
<input type="submit" id="search_submit" name="Search" value="Search"/>
</div>
</form>

Aber es scheint nicht zu funktionieren und es füllt auch nicht dynamisch die Kategorie-ID aus, was bedeutet, dass ich für jede Kategorie, die ich habe, eine neue Kategorie-Vorlage erstellen müsste.

Es wäre sehr dankbar, wenn mir jemand dabei helfen könnte, danke.

1
RICKY DAWN

In jede Vorlagendatei Ihres Themas können Sie auch den header.php einfügen

<?php
$term = null;
$btn = __('Search');
if ( is_category() ) { $term = get_queried_object(); }
?>
<form method="get" id="search_form" action="<?php echo home_url(); ?>">
<div>
<input type="text" value="" name="s" id="s" />
<?php
if ($term) {
  $btn = sprintf( __('Search in %s'), $term->name);
?>
<input type="hidden" value="<?php echo $term->term_id; ?>" name="cat" />
<input type="hidden" value="<?php echo $term->name; ?>" name="catname" />
<?php } ?>
<input type="submit" id="search_submit" name="Search" value="<?php echo $btn; ?>"/>
</div>
</form>

Wenn Sie eine Kategorie anzeigen, wird eine auf Kategorien beschränkte Suche angezeigt. In anderen Fällen wird ein generisches Suchformular angezeigt.

Dann schreiben Sie in Ihren search.php, um den Titel dinamisch auszugeben, so etwas wie:

<?php
$searchtitle = isset($_GET['catname']) && ! empty($_GET['catname']) ? 
sprintf( __('Search Results for &quot;%s&quot; in category &quot;%s&quot;'), $_GET['s'], $_GET['catname']) :
sprintf( __('Search Results for &quot;%s&quot;'), $_GET['s']);
?>
<h1><?php echo $searchtitle; ?></h1>
3
gmazzap