web-dev-qa-db-fra.com

Requête pour les messages personnalisés avec un slug de balise spécifique

J'ai un site wordpress avec plusieurs types de messages personnalisés. Sur une page, je souhaite afficher uniquement les publications d'un type personnalisé comportant une balise spécifique. J'ai utilisé la requête suivante pour le faire:

$args = array(
    'tag_slug__in'    => array('tag1', 'tag2'),
    'post_type'       => 'custom_post',
    'post_status'     => 'publish',
    'posts_per_page'  => 10,
    'order'           => 'ASC',
    'orderby'         => 'menu_order'
);

$posts = new WP_Query( $args );

Cependant, lorsque j'exécute cette requête, je reçois à la fois la page que j'ai balisée ainsi et un type de publication personnalisé différent (événement) avec les balises. Cependant, je devrais avoir cette limite au type custom_post indiqué. J'ai vérifié deux fois que le nom que j'ai fourni correspond au nom du type d'article personnalisé.

Évidemment, je pourrais facilement filtrer cela moi-même au début de la boucle pour afficher uniquement mon type de publication personnalisé, mais je souhaite gérer correctement le fait de ne renvoyer aucun résultat. Existe-t-il un moyen de faire en sorte que la requête filtre correctement mes résultats en articles JUST avec ce type personnalisé et les balises répertoriées?

3
neomang

Puisque tag est une taxonomie d'un type d'article custom_post, la requête pourrait ressembler à ceci:

<?php
$args = array(
    'post_type'  => 'custom_post',
    'tax_query'  => array(
        array(
            'taxonomy'  => 'post_tag',
            'field'     => 'slug',
            'terms'     =>  array(
                'tag1',
                'tag2',
            ),
        ),
    ),
);

$posts = new WP_Query( $args );

Voir WP_Query Paramètres de taxonomie .

1
Max Yudin