WordPressの強力なカスタマイズ機能の1つは、特定のカテゴリーの投稿を表示できることです。ウェブサイトのコンテンツを効果的に整理し、ユーザーエクスペリエンスを向上させるために、この機能を活用する方法について説明します。
カスタムクエリとは?
WordPressで特定のカテゴリーの投稿を表示するためには、カスタムクエリを使用します。これは、WordPressがデータベースから投稿を取得するためのカスタマイズされたリクエストです。通常、ループ内でこのクエリを使用して、投稿を一覧表示します。
カテゴリーIDの取得
特定のカテゴリーの投稿を表示するには、まずそのカテゴリーのIDを取得する必要があります。WordPressダッシュボード内でカテゴリーを編集する際、ブラウザのアドレスバーからIDを取得できます。また、カテゴリーの名前からIDを取得するカスタム関数も使用できます。
実践例
<?php
$args = array(
'cat' => 5, // 表示したいカテゴリーのID
'posts_per_page' => -1, // 表示する投稿数(-1はすべての投稿を表示)
);
$custom_query = new WP_Query($args);
if ($custom_query->have_posts()) :
while ($custom_query->have_posts()) : $custom_query->the_post();
// 投稿のループ内でタイトルやコンテンツを表示
the_title('<h2>', '</h2>');
the_content();
endwhile;
wp_reset_postdata(); // カスタムクエリをリセット
else :
echo 'このカテゴリーには投稿がありません。';
endif;
?>
よくある質問(FAQ)
Q. WordPressで特定のカテゴリーに属する記事のみを表示するウィジェットまたはショートコードはありますか?
A. Custom Postsプラグインやspecific-category等のプラグインで実現できます。自作する場合はWP_Queryとショートコードを組み合わせます:
add_shortcode("cat_posts", function($atts){ $a = shortcode_atts(["cat"=>"","count"=>5], $atts); $q = new WP_Query(["category_name"=>$a["cat"], "posts_per_page"=>$a["count"]]); ... });Q. ページネーション付きでカテゴリー別記事一覧を表示するにはどうすればよいですか?
A. WP_QueryにpagedとpostsPerPageを設定し、paginate_links()でページネーションを表示します。現在ページはget_query_var(“paged”)で取得します。メインクエリのページネーションが正しく動作するようpre_get_postsフックを使う場合は特に注意が必要です。
Q. サイドバーに同カテゴリの関連記事を表示するにはどうすればよいですか?
A. ウィジェットまたはfunctions.phpでカスタムウィジェットを作成します。単純な実装はget_posts()を使います:
$related = get_posts(["category__in"=>wp_get_post_categories($post->ID), "exclude"=>[$post->ID], "numberposts"=>5]);で現在の記事を除く同カテゴリの5記事を取得します。まとめ
WordPressのカスタムクエリを使用して、特定のカテゴリーの投稿を表示する方法を紹介しました。これにより、ウェブサイトのコンテンツをカスタマイズし、読者にとってより関連性の高い情報を提供できるようになります。
