CPT UIでアーカイブを制作した後、投稿をquery_postsを使って特定のカテゴリのみ表示させる。

どうも、レーウィンです。初めてかもしれないWordpress記事。
今回はCRT UIを使ったときの注意点の1つと解決方法をご紹介。

CPT UIについては今更説明すんのもあれなので参考サイト様のリンクを貼っておきます。
http://affiliateones.com/2017/06/02/custom-post-type-ui%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%82%92%E5%BE%B9%E5%BA%95%E8%A7%A3%E8%AA%AC%EF%BC%81/
ここで、アーカイブを作りたいなら
設定>アーカイブあり
のところのFalseをTrueに変更すればいい。
で、アーカイブページにこんな感じのを書けば読んでくれる。
(content-single.phpを読み込む場合)

<?php 
if ( have_posts() ) :
	while ( have_posts() ) :
		the_post();
		get_template_part( 'content', 'single' );
	endwhile;
	echo '</ul>';
endif;
?>

ここまでは基本通り、ここからカテゴリのフィルターをかけようとしたら一般的にはquery_postsもしくはget_postsを使用するわけだけど、
query_postsを使用すると普通に書いたらこうなる

<?php query_posts('cat=12'); ?>
<?php 
if ( have_posts() ) :
	while ( have_posts() ) :
		the_post();
		get_template_part( 'content', 'single' );
	endwhile;
	echo '</ul>';
endif;
?>

catのとこの数字はカテゴリのid。
これで表示されr・・・されない!!
query_postsはそのままの状態ではカスタム投稿を表示してくれないみたい。
で、post_typeを指定すれば表示される。

<?php query_posts('cat=12&post_type=test'); ?>
<?php 
if ( have_posts() ) :
	while ( have_posts() ) :
		the_post();
		get_template_part( 'content', 'single' );
	endwhile;
	echo '</ul>';
endif;
?>

post_typeについては
CPT UI > 投稿タイプを表示
の各投稿jタイプの設定にあるnameにあるやつ。

これで表示されるはず。
ではでは。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。名前及びコメントは必須項目、メールアドレス及びサイトURLは任意です。