カスタムタクソノミーのページ(taxonomy-.php)での投稿の表示件数を変える方法 【WordPress】
WordPressにはカスタム投稿タイプ、カスタムタクソノミーとうのがあって、ちょっと複雑なんだけど使いこなすと、とても便利な存在なんですが
そのカスタムタクソノミーのアーカイブページでの記事の表示件数を変えてやる方法です
通常は以下のコードでpost_typeを指定して、表示件数をposts_pre_pageで指定することでメインループの内容を書き換えるのですが
よく使われるquery_postsのコード
<?php $paged = get_query_var('paged'); ?> <?php query_posts( array( 'post_type' => 'free_template', 'posts_per_page' => -1, 'paged' => $paged, 'post_status' => 'publish' )); ?>
この方法だとカスタムタクソノミーに対応できません
これを付けなかったら普通にAのカテゴリとして機能するのですが、これをつけて投稿数だけをコントロールしようとした場合に、通常のpostがpost_typeに入ってしまって、うまく動かなくなります
またアーカイブページのテンプレートですので、一つ一つカスタムタクソノミーの何のタグかまで指定するのは無理です
そこで使えるのがフックを利用した方法です
functions.phpでカスタムタクソノミーのページの時には投稿数何件にするかというのを操作出来ます
正直フックとかあんまりわかっていないのですが
こちらのサイトで紹介されていたコードです
コード
//タクソノミーページでのループの表示件数変更 add_action('pre_get_posts', 'my_pre_get_posts'); function my_pre_get_posts($query) { if (!is_admin() && $query->is_main_query() && is_tax()) { $query->set('posts_per_page', -1); } }
これをfunctions.phpに追加するのですが
変更するポイントは 4行目の if (!is_admin() && $query->is_main_query() && is_tax())
すでにカスタムタクソノミー用のコードになっていますが is_tax()でタクソノミーのページだったらという条件分岐です
queryを使ったものは、ポストタイプを指定するのに対して。こちらの方法は、条件分岐で対応するものに独自の表示件数を表示させるようにするものです
表示件数は 5行目の $query->set(‘posts_per_page’, -1);
-1は全件表示という意味です、これを好きな値に変更することで、タクソノミーのページでの表示件数をコントロールすることが出来ます
さらに条件分岐でどのカスタムタクソノミーなのか!、どのカスタムタクソノミーのカテゴリなのか!まで指定することが出来ます
ポストタイプよりも遥かに多くのシチュエーションを条件分岐で操作することが可能です
条件分岐の詳しい種類と使い方は WIKIが参考になります
http://wpdocs.sourceforge.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0
COMMENT