Theres un moyen d'utiliser $query->set('tax_query', ...)
dans le pre_get_posts
filtre? par exemple, le code suivant ne modifie pas la requête. Notez que je construis des $ taxonomies et une recherche personnalisée.
function custom_search_filter($query) {
...
// array('taxonomy' => 'category', 'field' => 'id', 'terms' => array( 41,42 ), 'operator' => 'IN')
$taxonomies = implode(',', $taxonomy_arr);
// /wordpress/25076/how-to-filter-wordpress-search-excluding-post-in-some-custom-taxonomies
$taxonomy_query = array('relation' => 'AND', $taxonomies);
$query->set('tax_query', $taxonomy_query);
}
return $query;
}
add_filter( 'pre_get_posts', 'custom_search_filter', 999 );
Merci d'avance.
pre-get-posts
José Pablo Orozco Marín
la source
la source
WP_Query
objet dans une méthode de définition d'argument?Réponses:
La
$query
variable dans le filtre représente unWP_Query
objet, vous ne devez donc pas passer un nouvelWP_Query
objet dans la méthode de définition des propriétés de cet objet.La question à partir de laquelle vous avez copié du code n'utilisait pas correctement le filtre, ce qui, à mon avis, est au cœur de votre problème.
Oui,
tax_query
peut être utilisé à l'intérieur d'un filtre / actionpre_get_posts
(ou similaireparse_request
).Voici un exemple:
Spécifiez une taxonomie personnalisée pour les requêtes de recherche
la source
$tax_query
n'est pas un objet,$query
bien que (c'est une instance deWP_Query
).Les requêtes fiscales nécessitent que vous définissiez également l'objet tax_query dans la requête car la requête a déjà été analysée. Voir ma réponse pour les pages Modifier la taxonomie pour exclure des éléments dans les taxonomies enfants .
la source