WordPress でタグやカテゴリの記事一覧を簡単表示! プラグイン不要

「広告」

 WordPress でブログを書いていて、特定のタグやカテゴリの記事をまとめて目次一覧を表示したくなりました。
 テーマとの相性があったりするプラグインに極力頼りたくなかったので、カスタムショートコード 「term_posts」をなんとか製作。
 これを使って、タイトル+公開日/更新日付きの記事一覧を簡単に作れるようになりました。
 この記事ではショートコード 紹介と、書式や使い方を解説します。


ショートコードの概要説明

 記事一覧(投稿リスト)表示系のプラグインは、Cocoon と相性が悪い場合が多く、思った通りに動かないことがあります。
 そのため、必要に迫られて 有料テーマを入れない主義の自分が使うために用意したコード です。

 カスタムショートコード 「term_posts」 は、functions.php に以下のコードを追加することで使用できます。

※注意:paged 非対応・offset 用途限定です。

ショートコード

// ==================================================
// タグまたはカテゴリ指定で記事一覧(タイトル+日付)ショートコード
// ==================================================
function term_post_list_shortcode($atts) {

    $atts = shortcode_atts(array(
        'tag'            => '',
        'category'       => '',
        'posts_per_page' => 25,
        'order'          => 'ASC',
        'orderby'        => 'date',
        'offset'         => 0,
        'show_updated'   => true,
    ), $atts, 'term_posts');

    $args = array(
        'posts_per_page' => intval($atts['posts_per_page']),
        'order'          => $atts['order'],
        'orderby'        => $atts['orderby'],
        'offset'         => intval($atts['offset']),
    );

    if (!empty($atts['tag'])) {
        $args['tag'] = sanitize_text_field($atts['tag']);
    }

    if (!empty($atts['category'])) {
        $args['category_name'] = sanitize_text_field($atts['category']);
    }

    $query = new WP_Query($args);

    if (!$query->have_posts()) {
        return '<p>記事はまだありません。</p>';
    }

    $output = '<ul>';

    while ($query->have_posts()) {
        $query->the_post();

        $output .= '<li>';
        $output .= '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';
        $output .= ' — 公開: ' . get_the_date('Y-m-d');

        if ($atts['show_updated'] && get_the_modified_date() !== get_the_date()) {
            $output .= ' / 更新: ' . get_the_modified_date('Y-m-d');
        }

        $output .= '</li>';
    }

    $output .= '</ul>';

    wp_reset_postdata();
    return $output;
}

add_shortcode('term_posts', 'term_post_list_shortcode');

注意と免責

 functions.php の編集は非常に危険です。最悪の場合はWordPressが壊れます。編集は自己責任で細心の注意を払った上でお願いします。
 また、上記のショートコードで何か問題が発生しても、当方は一切のサポートをしませんし、責任も負いません。
 ご納得の上でご利用下さい。


使い方の基本

タグ指定で記事一覧

[term_posts tag="example" posts_per_page="25" order="ASC" orderby="date"]
  • tag → 表示したいタグの スラッグ
  • posts_per_page → 最大表示件数
  • order → ASC(古い順) / DESC(新しい順)
  • orderby → date(投稿日順) / modified(更新日順)

カテゴリ指定で記事一覧

[term_posts category="example-category" posts_per_page="20" order="DESC" orderby="modified"]
  • category → 表示したいカテゴリの スラッグ
  • posts_per_page, order, orderby はタグ指定と同じ

タグとカテゴリを同時に指定

[term_posts tag="example" category="example-category" posts_per_page="10"]
  • タグとカテゴリの両方を指定可能
  • 両方に該当する記事のみが表示されます

表示形式

  • デフォルトは <ul> リスト形式
  • 各記事は以下のように表示されます:
・記事タイトル — 公開: 2025-01-10 / 更新: 2025-02-05
  • 更新日がない記事は「更新: …」は表示されません

便利なポイント

  • プラグイン不要 → 軽量で更新要らずで将来も安心
  • タグ・カテゴリ両方対応 → サイト全体で統一的に使える
  • 公開日・更新日表示 → 記事の新旧がひと目でわかる
  • HTML と CSS は <ul> / <li> なので自由にデザイン可能

注意点

  • タグ・カテゴリは スラッグ(アルファベット表記)を必ず指定
  • functions.php を変更する際は、必ずバックアップを取る
  • 保存後はキャッシュをクリアしてページを確認すると確実です

💡 これで手間なく、タグやカテゴリごとの記事一覧を自由に作れるようになります。


「term_posts」 ショートコード 見本テンプレート集

 以下のテンプレートをコピーして、自分のブログに合わせてタグやカテゴリのスラッグを変更するだけで記事一覧を作成できます。


タグ指定で記事一覧(古い順)

[term_posts tag="example" posts_per_page="25" order="ASC" orderby="date"]
  • タグ「nasopalatine-duct-cyst」の記事を古い順に25件表示
  • 投稿日順で並びます
  • 公開日・更新日も表示

タグ指定で記事一覧(新しい順)

[term_posts tag="example" posts_per_page="25" order="DESC" orderby="date"]
  • 新しい順に表示したい場合はこちら

カテゴリ指定で記事一覧(更新日順)

[term_posts category="example-category" posts_per_page="20" order="DESC" orderby="modified"]
  • カテゴリ「medical-case」の記事を最新更新順で20件表示
  • 更新日がある記事は更新日も表示

タグ+カテゴリ同時指定

[term_posts tag="example" category="medical-case" posts_per_page="15" order="ASC" orderby="date"]
  • タグとカテゴリ両方に該当する記事のみを古い順に15件表示

更新日表示をオフにする

[term_posts tag="example" posts_per_page="10" show_updated="false"]
  • 更新日を表示せず、公開日のみ表示したい場合はこちら

表示件数を自由に変更

[term_posts category="example-category" posts_per_page="50" order="DESC" orderby="date"]
  • 表示件数 posts_per_page は自由に設定可能
  • 50件、100件など多めに表示したい場合も簡単

26件目〜50件目を表示(offset 使用)

[term_posts tag="example" posts_per_page="25" order="ASC" orderby="date" offset="25"]
  • posts_per_page="25" → 表示件数
  • offset="25" → 最初の25件をスキップして26件目から表示

💡 ポイント

  • offset を使うと、任意の範囲の記事を抜き出して表示できます
  • ページネーションと組み合わせる場合は、少しカスタムコードが必要ですが、単純に「26〜50件だけ」ならこの方法でOK(※ offset はページネーション(paged)とは併用できません。)

使い方のコツ

 コピー&ペーストして、タグやカテゴリのスラッグだけ書き換えればすぐ利用可能

  • ページや固定ページ、投稿記事のどこでも使用可能
  • <ul> / <li> 形式なので、CSS でリストのデザインを調整できます

このテンプレート集を使えば、タグ・カテゴリごとのまとめページ作りが一発で完了 します。


タイトルとURLをコピーしました