Si j'utilise pre_get_posts
de cette façon
function ef_company_query($query) {
if ( !is_admin() && $query->is_main_query() && $query->is_post_type_archive( 'company' ) ) {
$query->set('post_type', array( 'company', 'mission', 'values', 'staff' ) );
}
}
add_action('pre_get_posts','ef_company_query');
il semble que wordpress ne charge pas archive-company.php mais archive.php.
Comment utiliser pre_get_posts
pour ajouter des CPT supplémentaires à une page d'archive?
EDIT 1
J'ai mentionné archive-company.php parce que je veux charger les CPT supplémentaires à l'adresse URL www.website.com/company.
EDIT 2
Je suis ouvert à toute solution qui extrait un modèle spécifique basé sur l'URL www.website.com/company et permet l'ajout de CPT supplémentaires (de préférence via pre_get_posts
, en termes de performances).
EDIT 3
Essayer de rendre les choses plus claires ici!
Je souhaite pouvoir charger plusieurs CPT sur l'URL www.website.com/company.
pre_get_posts
, en termes de performances)?J'essaie d'éviter l'utilisation de new WP_Query()
et d'avoir plusieurs boucles dans la page.
Vous semblez supposer qu'il récupérerait l'archive pour en premier de plusieurs types de publication. Mais pourquoi? L'ordre dans ce cas n'indique aucune sorte de priorité.
WP semble aussi considérer cela comme logique. Si vous examinez get_archive_template()
, le modèle individuel ne sera pris en compte que s'il y a un seul type dans la requête.
Plusieurs types de publication dans la requête entraîneront le chargement de archive.php
, comme vous le constatez.
Si vous souhaitez charger un modèle plus spécifique, vous devez également le remplacer par des filtres, par exemple avec archive_template
one (un dynamique dans get_query_template()
).