web-dev-qa-db-fra.com

La recherche personnalisée de type post_type $ wp_query-> query_vars ne correspond pas

Je rencontre ce problème en intégrant le gestionnaire d'événements dans mes autres types de publication, les autres types de publication personnalisés apparaissant dans le tableau $ wp_query-> query_vars, à l'exception de ceux du gestionnaire d'événements. La recherche fonctionne et récupère les types de publication d'événement, mais pour une raison étrange, la variable de requête post_type n'inclut pas "événement". Pourquoi cela arrive-t-il? Voici le code que j'utilise pour forcer la requête à utiliser le type de publication d'événement:

function _search_all($query) {

if($query->is_search()) {
$query->set("post_type", array(EM_POST_TYPE_EVENT, FEATURES_ID, BRIEFS_ID, CAMPUS_NEWS_ID));
}

return $query;
}
add_action("pre_get_posts", "_search_all");

EM_POST_TYPE_EVENT = 'event', et est enregistré dans le code du plugin. Il apparaît partout ailleurs sur le site, mais dans les variables de requête du résultat de la recherche. Les 3 autres types de publication sont également personnalisés. Le type de publication "événement" est défini sur exclude_from_search = false, ce qui explique pourquoi je ne peux pas inclure le type de publication de l'événement dans aucune recherche.

Juste pour clarification

Voici un exemple de chaîne de requête

  ?s=science&post_start_date=&post_end_date=&post_type[]=event

et le résultat de $ wp_query-> query_vars est

array(6) { ["post"]=> string(4) "post" 
           ["page"]=> string(4) "page" 
           ["attachment"]=> string(10) "attachment" 
           ["features"]=> string(8) "features" 
           ["briefs"]=> string(6) "briefs" 
           ["campus_news"]=> string(11) "campus_news" 
 } 

Où est mon événement post_type?

1
cj5

construisez les paramètres url quelque chose comme ceci:

?post_type[]=event&post_type[]=feature&post_type[]=brief

Alors $searchposttypes = $_GET['post_type'] aura un tableau. transmettez-le à la wp_query

je devrais ajouter que vous devez valider les paramètres $ _GET avant de continuer.

référence: wp_query - paramètres de type

1
pcarvalho