【WP】特定のカテゴリーの投稿を固定ページに表示させる

WordPress

いくつかのサイトを参照させてもらい、うまく動いた結果をまとめた。

WPテーマのfunction.phpにコードを書いて、ミスするとサイトの表示自体がされなくなってしまうので、リスク回避としてショートコード・プラグインを使った。

使ったプラグイン Post Snippets https://wordpress.org/plugins/post-snippets/

大まかな手順

  1. プラグインをインストール
  2. プラグインの設定でコードを入力
  3. 表示させたい固定ページにショートコードを貼り付け

プラグインのインストール

WPダッシュボードの「プラグイン」>「新規追加」から”Post Snippets”を検索して、インストール。有効化。

プラグインで設定

ダッシュボード 左メニューに“PostSnippets”ができているので、All Snippets を選択、「Add New」で新規にSnippetsを作成。

Edit Snippetsの最初の空欄は、ショートコードになるタイトル。任意のタイトルを入力する。アルファベットがベター。

CodeEditorに入力するコードは参考サイトをあとで紹介する

Variablesは空欄でOK

ShortcodeとPHP Codeにチェックを入れる。

Descriptionは作成しているショートコードの内容説明。空欄のままでも良い。

参考コード

いくつか例示してくれているコードを使ってみたが、うまく動かず。最終的にうまく動いてくれたのが下のページのコード。ありがとうございます。

https://notes-de-design.com/website/wordpress/display-article-list-wordpress/
<?php
$args = array(
    'post_type' => 'post', // 投稿タイプ
    'category_name' => 'uncategorized', // カテゴリ名(スラッグ)
    'posts_per_page' => 5 // 表示件数
);
$new_query = new WP_Query($args);
?>
<?php if ($new_query->have_posts()) : ?>
    <ul>
        <?php while ($new_query->have_posts()) : $new_query->the_post(); ?>
            <li>
                <?php the_time('Y.m.d'); ?>
                <?php the_title(); ?>
            </li>
        <?php endwhile; ?>
        <?php wp_reset_postdata(); ?>
    </ul>
<?php else : ?>
    <p>記事がありません。</p>
<?php endif; ?>

触るところは、(1)カテゴリ名と、(2)表示件数くらい。

uncategoraizedを指定したいカテゴリーのスラッグ名(アルファベット)に変更すればOK

表示件数は5件のままで良ければそのまま、増減したければ任意の数字(半角)に変更。

対象記事がない時は「記事がありません。」と表示されるが、変更したければ修正。

このコードをPost SnippetsのCode Editorに入力して保存。

参考)PHPコードチェッカー(オンライン・ツール)

https://phpcodechecker.com/

ショートコードの貼付

PostSnippets 編集画面の右上にあるCopy shortcodeでショートコードをコピーして、表示させたい固定ページにコピペ。

注意)固定ページでコピペする際、「ショートコード」ブロックを選択する

注意2)「投稿」の「カテゴリー」で表示させたいカテゴリーの「スラッグ名」を設定するのを忘れずに。

うまく表示されていることを確認して、完了

↓ 参考になれば幸いです。「いいね」かシェアをよろしくね。