Custom Post Type UIで作成したカスタム投稿タイプをメインクエリで表示する方
-
Custom Post Type UIで「flower」というカスタム投稿タイプを作成し、
カテゴリ「shop」にいくつか投稿しましたが、
shopのリンクを開いても何も表示されませんでした。試行錯誤しているうちに、
<?php if(have_posts()): while(have_posts()): the_post(); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endwhile; endif; ?>
の部分を
<?php //追記1、2を追記 query_posts('post_type=flower&category_name=shop'); //←追記1 if(have_posts()): while(have_posts()): the_post(); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endwhile; endif; wp_reset_query(); //←追記2 ?>
というようにquery_postsでメインクエリを上書きしたところ表示されました。
このquery_posts中のpost_typeをpostにすると表示されません。ここで、
flowerのAdvanced Optionsの設定内容を確認したところ、
利用タイプ ?という項目にpostと書かれていました。
この利用タイプにpostと書かれていたからって、
post_type=postじゃ表示されないのかな?と思いました。メインクエリ(URL)でpost_typeを指定することもできるのでしょうが(現在のURL&post_type=flower)、
このshopカテゴリにはflower以外にもtreeというカスタム投稿タイプの投稿も表示したいと考えていますし、
パーマリンク設定の/%category%/%postname%/というカスタム構造そのままでいければ、と思っています。post_type=postで表示されるならそのどちらも表示できると考えているのですが、
Custom Post Type UIの設定に足りない部分があるのでしょうか?
何が足りないかとかは設定内容を公開していないので、みなさまに分かる訳がありませんので、
どう設定すればよいのかご教授願います。<追記>
functions.phpにfunction shop_posts_per_page($query) { if ( is_admin() || ! $query->is_main_query() ) return; if ( $query->is_category() ) { $query->set( 'post_type', array('flower','tree') ); } } add_action('pre_get_posts','shop_posts_per_page');
と記述したところどちらも表示されるようになりました。
このやり方で良いでしょうか?
(カテゴリ名がshopの時だけという条件の追記は必要ですが)
- トピック「Custom Post Type UIで作成したカスタム投稿タイプをメインクエリで表示する方」には新たに返信することはできません。