WordPressで特定のカテゴリーの投稿を表示する方法

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のカスタムクエリを使用して、特定のカテゴリーの投稿を表示する方法を紹介しました。これにより、ウェブサイトのコンテンツをカスタマイズし、読者にとってより関連性の高い情報を提供できるようになります。