自作でワードプレスのテーマを作成していると細かい部分などはつい後回しにしてしまいます。今回はこのブログでも放置していた、カテゴリー内で投稿がまだひとつしかない時の次の投稿へボタンの表示・非表示を実装した時に使用した、「現在の投稿以外に投稿があるかないか判断する方法」を備忘記録として残しておきます。
WP_Queryを使用して、表示されている投稿以外に投稿があるか判断しよう
ワードプレスのテーマでPHPを使用して何か処理を追加していく時は私は基本的にfunctions.phpに記載をしていきます。ということで、早速functions.phpに表示されている投稿以外に投稿があるかの判定処理をショートコードで追加していきます。
function le_next_previous_post_check_short_code() { global $post; $category = get_the_category($post->ID); $args = array( 'post__not_in' => array($post->ID), 'category__in' => $category[0]->cat_ID, ); $query = new WP_Query($args); if ($query->have_posts()) { // 現在の投稿以外に投稿がある場合の処理 } else { // 現在の投稿以外に投稿がない場合の処理 } } add_shortcode('le_next_previous_post_check', 'le_next_previous_post_check_short_code');
テンプレートタグのget_the_category()で現在の投稿のカテゴリー情報を取得しています。ワードプレスループの外で使用するため$postのIDを渡しています。
WP_Queryにpost__not_inで現在の投稿を除いて、category__inに取得しておいたカテゴリー情報から現在の投稿カテゴリーを渡しています。
have_posts()で値があるかどうかの判断処理をしています。
これで、現在の投稿以外に投稿がある場合とない場合で表示の切り替えなどができます。