SearchWP Documentation

Consultez le guide d’installation, parcourez la base de connaissances, découvrez les nombreux hooks de SearchWP

Limiter les résultats au type de publication (par ex. Publications, Pages)

Par défaut, SearchWP renverra les résultats conformément à la configuration du moteur utilisé pour effectuer la recherche. Il y a des moments où vous voudrez créer un formulaire qui permet aux visiteurs de limiter les résultats à un nombre quelconque de sources ajoutées au moteur. Une fois le formulaire créé, nous pouvons utiliser un Mod pour limiter les résultats renvoyés par le moteur à ceux spécifiés par le formulaire.

L'implémentation de base ressemble à ceci :

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Limit SearchWP results to Posts and Pages.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => [
\SearchWP\Utils::get_post_type_source_name( 'post' ),
\SearchWP\Utils::get_post_type_source_name( 'page' )
],
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Note : Cet extrait illustre la limitation des résultats aux articles et aux pages, sans tenir compte de la saisie du formulaire.

Nous pouvons intégrer ce Mod à la saisie du formulaire (en supposant que la variable $_GET s'appelle sources) comme ceci :

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Limit SearchWP results to form field value.
// `sources` is a GET array of post type names.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
if ( empty( $_GET['sources'] ) ) {
return $mods;
}
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => array_map( function( $source ) {
return \SearchWP\Utils::get_post_type_source_name( $source );
}, $_GET['sources'] ),
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Note : Cet extrait suppose que votre variable de formulaire a été configurée comme des cases à cocher qui créent un tableau de noms de types de publication, et que les noms de types de publication correspondent à ceux qui ont été ajoutés au moteur utilisé, par exemple.

<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
<label>
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span>
<input type="search" class="search-field"
placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>"
value="<?php echo get_search_query() ?>" name="s"
title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
</label>
<p>
<input type="checkbox" class="search-field" id="source-post"
value="post" name="sources[]" />
<label for="source-post">Posts</label>
</p>
<p>
<input type="checkbox" class="search-field" id="source-page"
value="post" name="sources[]" />
<label for="source-page">Pages</label>
</p>
<input type="submit" class="search-submit"
value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>
view raw tmp.html hosted with ❤ by GitHub

(Spécifiquement les lignes 9-18)

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Get SearchWP Now
Icône de moteurs de recherche multiples