Blog
投稿のカテゴリ別一覧ページの出力方法とページャーの設定方法
使用するプラグイン
・WP-PageNavi
ページャーの実装に使用
・FV Top Level Categories
URLのcategoryを削除
必要なプラグインをインストールし有効化
まず上記2つのプラグインをインストールし有効化しておきます。
category.phpを作成
category.phpを作成し、下記のコードを記述しアップロードします。
この段階で「WP-PageNavi」のプラグインを入れていない場合エラーになりますのでご注意ください。
▼category.php
<ul>
<?php
$cat = get_the_category();
$cat = $cat[0];
$catname = get_cat_name($cat->term_id); // カテゴリー名を取得
$catid = get_cat_ID($catname); // カテゴリーIDを取得
?>
<?php
$paged = get_query_var('paged', 1);
$args = array(
'paged' => $paged,
'post_type' => 'post',
'posts_per_page' => 6,
'cat' => $catid,
);
$query = new WP_Query($args);
?>
<?php if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>
<li>
</li>
<?php endwhile;endif; ?>
</ul>
<?php wp_pagenavi(array('query' => $query)); ?>
<?php wp_reset_postdata(); ?>
2ページ目以降を表示させる
このままだとおそらく2ページ目移行が404だったりページはあるが出力されなかったりするかと思います。
ダッシュボード>設定>表示設定>1ページに表示する最大投稿数の項目を「1」にすれば解決はするのですが、他の投稿タイプなどに影響が出る可能性があるのでそういった場合はダッシュボードの設定はもとに戻し、下記のコードをfunctions.phpに記述すれば解決できます。
下記の場合はカテゴリ別一覧ページの場合1ページに表示する最大投稿数の項目を「1」にする記述なので他の一覧ページなどにも適用させてい場合は適宜変更して頂く必要があります。
▼functions.php
function change_pre_get_posts($query){
if(!is_admin() && $query->is_main_query()){
if(is_category()){
$query->set('posts_per_page', 1);
}
}
}
add_action('pre_get_posts', 'change_pre_get_posts');