Je développe un thème personnalisé avec des types de messages personnalisés impliqués. Les types de messages personnalisés ont été définis via le plugin 'Pods' ( http://pods.io ).
En écrivant un category.php, je me suis rendu compte que la boucle standard ne récupère pas les messages CPT (Custom Post Types) qui appartiennent à une certaine catégorie. Est-ce correct? Sinon, existe-t-il des balises de modèle disponibles pour rendre les publications CPT d'une catégorie spécifique?
Ou est-ce la bonne façon de récupérer plutôt les publications CPT via WP_Query?
Les types de publication personnalisés sont par défaut exclus de la requête principale, sauf sur les pages de taxonomie et les archives de types de publication personnalisés.
Vous pouvez simplement utiliser pre_get_posts
Pour modifier correctement la requête principale (modifier les variables de requête avant la génération et l'exécution de la requête SQL) selon vos besoins.
Quelques notes sur pre_get_posts
pre_get_posts
Exécute les requêtes front-end et back-end, il est donc très important de faire la is_admin()
vérifier les requêtes uniquement destinées à exécuter front-end ou back-end
pre_get_posts
Modifie toutes les instances personnalisées de WP_Query
, get_posts()
(qui utilise WP_Query
) et la requête principale (qui utilise également WP_Query
). Vous souhaiterez utiliser la vérification is_main_query()
pour modifier uniquement spécifiquement la requête principale.
Vous pouvez faire ce qui suit dans un plugin ou les fonctions de votre thème.php
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin() // Only target front end queries
&& $q->is_main_query() // Only target the main query
&& $q->is_category() // Only target category archives
) {
$q->set( 'post_type', ['post', 'custom_post_type'] ); // Adjust as needed
}
)};
Vous devez utiliser taxonomy.php
au lieu de category.php
Donnez peu de lecture à la hiérarchie du modèle sur https://developer.wordpress.org/themes/basics/template-hierarchy/
Tous vos messages personnalisés utiliseront taxonomy.php
si vous avez défini une taxonomie personnalisée.
Par exemple: supposons qu'il existe deux taxonomies, c'est-à-dire tax1 & tax2
Si vous voulez le même modèle pour les deux taxonomies, choisissez taxonomy.php
Mais si vous voulez des modèles différents pour tax1 & tax2
puis utilisez
taxonomy-tax1.php
& taxonomy-tax2.php
en conséquence
J'espère que j'ai pu effacer quelques choses pour vous.
Bonne chance