web-dev-qa-db-fra.com

Exclure les catégories de la requête de recherche

J'ai deux catégories que je veux exclure de mes résultats de recherche, sans succès pour l'instant.

J'ai essayé d'ajouter le code suivant, mais cela n'a pas fonctionné.

$search_query = query_posts(array('category__in' => array(-22, -21)));

Voici mon code actuel.

global $query_string;

$query_args = explode("&", $query_string);
$search_query = array();

foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach

$searchq = new WP_Query($search_query);

while ($searchq->have_posts()) : $searchq->the_post();
3
Swen

Vous pouvez utiliser l'action pre_get_posts pour exclure des catégories de la requête de recherche.

function wcs_exclude_category_search( $query ) {
  if ( is_admin() || ! $query->is_main_query() )
    return;

  if ( $query->is_search ) {
    $query->set( 'cat', '-22, -21' );
  }

}
add_action( 'pre_get_posts', 'wcs_exclude_category_search', 1 );

Vous devez coller ce code dans le fichier functions.php de votre thème.

5
Robert hue