WordPressでは投稿記事を一覧表示できるアーカイブページが用意されています。
アーカイブページで表示する件数は管理画面「設定」→「表示設定」→「1ページに表示する最大投稿数」で設定可能ですが、ここでの設定内容は、「投稿」、「すべてのカスタム投稿タイプ」で共有されています。
つまり、デフォルトでは投稿タイプごとに表示件数を設定することはできないということです。
これでも問題ないケースももちろんあるとは思いますが、逆に
このカスタム投稿タイプでは表示件数を変えたいんだよな……
という場面もあるかと思います。
そこで今回は
アーカイブページで出力する表示件数を投稿タイプごとに設定する方法
をご紹介します。
コピペで簡単にカスタマイズできるのでぜひお試しください!
【ソースコード】アーカイブページで出力する表示件数を投稿タイプごとに設定
以下のソースコードをfunctions.phpへ追記します。
カスタム投稿タイプ「products」のアーカイブページの表示件数だけ指定する
add_action( 'pre_get_posts', function( $query ) ) {
// 「管理画面」や「メインクエリ以外」には適用しない
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// カスタム投稿タイプ「products」の場合は1ページに「30件」表示する
if ( $query->is_post_type_archive( 'products' ) ) {
$query->set( 'posts_per_page', 30 );
return;
}
}
複数のカスタム投稿タイプの表示件数を指定したい場合
add_action( 'pre_get_posts', function( $query ) ) {
// 「管理画面」や「メインクエリ以外」には適用しない
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// カスタム投稿タイプ「products」の場合は1ページに「30件」表示する
if ( $query->is_post_type_archive( 'products' ) ) {
$query->set( 'posts_per_page', 30 );
return;
}
// カスタム投稿タイプ「customer-voice」の場合は1ページに「20件」表示する
if ( $query->is_post_type_archive( 'customer-voice' ) ) {
$query->set( 'posts_per_page', 20 );
return;
}
}
たったこれだけで特定のカスタム投稿タイプのアーカイブページでだけ記事の表示件数を指定することが可能です!
まとめ
WordPressはデフォルトで様々な機能やページを搭載しています。
しかし、ちょっとした個別調整などを行いたい場合は、今回のようにfunctions.phpにカスタマイズ用のソースコードを記述する必要があります。
今回ご紹介したソースコードではフィルターフックの1つであるpre_get_postsを利用していますが、このようにフィルターフックを活用することで柔軟なカスタマイズができます。
ご興味のある方はぜひご自身でも色々とお調べいただき、カスタマイズに挑戦してみて下さい。
この記事が少しでもお役に立ったなら何よりです!
当ブログではWordPressやWeb制作、PHPに関する情報を発信しています。
ご興味のある方はぜひほかの記事もご覧いただけるとうれしいです。
コメント