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