カスタムポストタイプUI(CPT UI)で共通化したタグの記事一覧をタグアーカイブページ(tag.php)で表示させる方法

カスタムポストタイプUI(CPT UI)でカテゴリーとタグを通常の投稿と共有させる方法という記事を書きましたが、共有したタグに属する記事一覧をタグアーカイブページで取得したいという場面で少し四苦八苦してしまいましたので、記録として残しておきたいと思います。

スポンサーリンク




共有したタグはカスタムタクソノミーとしてあつかう

通常の投稿に付与されたタグであれば、

<?php
$args = array( 
        'tag=タグのスラッグ'
        );
$the_query = new WP_Query( $args );
?>

と、タグのスラッグを指定するクエリを呼び出してあげれば、そのタグに属する投稿一覧を取得することができます。

しかし、カスタムポストタイプに共有化したタグを付与する場合、上記のクエリでは記事一覧を取得することができません。

その場合は、カスタムポストタイプとカスタムタクソノミーを指定してクエリを呼び出してあげる必要があります。

<?php
$args = array(
    'post_type' => 'カスタムポストタイプのスラッグ',
    'tax_query' => array(
            array(
                'taxonomy' => 'カスタムタクソノミーのスラッグ',
                'field' => 'slug',
                'terms' => 'タグのスラッグ',
                ),
            ),
        );
$the_query = new WP_Query( $args );
?>

しかし、CPT UIを利用する場合、タクソノミーは自分で作成しているわけではありませんので、どのように指定すれば良いか分かりづらいという状況がありました。

結論としては、タクソノミーのスラッグにpost_tagを指定することで解決しました。

<?php
$args = array(
        'post_type' => 'カスタムポストタイプのスラッグ',
		'tax_query' => array(
			array(
				'taxonomy' => 'post_tag', 
				'field' => 'slug', //slugを指定
				'terms' => 'タグのスラッグ'
			)
		)
    );
$the_query = new WP_Query( $args );
?>

このpost_tagというスラッグはタグクラウドを取得する際にも利用するようですが、なぜ共通化したタグのスラッグがpost_tagになるのかというのが、いまいちよく分からないですね。

いずれにしてもCPT UIで共通化したタグはカスタムタクソノミーとしてあつかう必要があるのですね。

Wordpressの中級者以上を目指すなら

Wordpressの中級者以上を目指すのであればオンラインスクールもおすすめです。

筆者も講師(メンター)の一人ですが、オンラインスクールの一つ「Techacademy」ではWordpressをカスタマイズするために必要なカリキュラムが用意されています。

オンラインブートキャンプ WordPressコース

Wordpressにも利用されているPHPを利用してWebアプリケーションを開発してみたい方には「PHP/Laravelコース」がおすすめです。

オンラインブートキャンプ PHP/Laravelコース
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする