web-dev-qa-db-fra.com

Zone de recherche de catégorie personnalisée pour WordPress

J'ai vu des plugins ajouter une liste supplémentaire de catégories à la barre de recherche standard de WordPress, mais cela ne m'aide pas du tout.

Mon site contient beaucoup de messages dans de nombreuses catégories et ce que je veux faire est d’ajouter un grand champ de recherche en haut de chaque page de catégorie intitulée "search [nom du chat]:". catégorie qu’ils examinent actuellement.

Pour me sauver d'avoir à placer du code (et créer un modèle de page de catégorie pour chaque catégorie que j'ai), il serait brillant si cela peut en quelque sorte être créé de manière dynamique. Donc, ce que je vise à réaliser est la suivante:

  1. Titre de la barre de recherche créé dynamiquement
  2. Un champ de recherche qui recherche uniquement dans la catégorie actuellement affichée par l'utilisateur

J'ai ceci:

<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>

Mais cela ne semble pas fonctionner et il ne remplit pas de manière dynamique l’ID de catégorie, ce qui signifie que je devrais créer un nouveau modèle de catégorie pour chaque catégorie que j’ai.

Ce serait très apprécié si quelqu'un pouvait m'aider avec ça, merci.

1
RICKY DAWN

Dans chaque fichier de modèle de votre thème, même dans le header.php, vous pouvez mettre

<?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>

Si vous visualisez une catégorie, une recherche de catégorie restreinte sera affichée. Dans d'autres cas, un formulaire de recherche générique apparaîtra.

Ensuite, dans votre search.php, pour afficher le titre de manière dinam, mettez quelque chose comme:

<?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