web-dev-qa-db-ja.com

特定のタグを付けたカスタム投稿を検索する

私はいくつかのカスタム投稿タイプを持つワードプレスサイトを持っています。ページに、特定のタグを持つカスタムタイプの投稿のみを表示したい。私はこれを行うために以下のクエリを使用してきました:

$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 );

ただし、このクエリを実行すると、このようにタグ付けしたページと、そのタグを使用した別のカスタム投稿タイプ(イベント)の両方が表示されます。ただし、これは記載されているcustom_postタイプに限定する必要があります。私が提供した名前がカスタム投稿タイプの名前と一致することを再確認しました。

明らかに、私は自分のカスタム投稿タイプのみを表示するためにループの始めにこれを自分でフィルタリングすることは自明ですが、結果を返さないことを適切に処理したいと思います。このカスタムタイプとリストされたタグの両方を使用して、クエリで自分の結果をJUST投稿に正しくフィルタする方法はありますか。

3
neomang

tagcustom_post投稿タイプの分類法なので、クエリは次のようになります。

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

WP_Query 分類パラメータ を参照してください。

1
Max Yudin