web-dev-qa-db-fra.com

Des balises de modèle pour afficher des messages de type de publication personnalisés dans le modèle de catégorie?

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?

1
Bunjip

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
    }
)};
1
Pieter Goosen

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

0
terminator