【Cocoon】「読んでほしい順」に並べたい!WordPressカテゴリー記事を自由に並び替える方法

カテゴリー内の記事を新着順ではなく、好きな順番に並べ替えたい!と思ったことはありませんか??

WordPressでは、カテゴリー内の記事は基本的に新着順で表示されますが、「読んでほしい順」に並べられたら便利ですよね。

実は、WordPressではカテゴリー内の記事順を自由に並べ替えることができ、主に2つの方法があります。

  1. プラグインを使って簡単に並べ替える方法
  2. PHPコードを活用した方法

同じように困っている方の参考になれば嬉しいです。

スポンサーリンク

カテゴリー内の記事を並べ替える方法

記事の並べ替えは、主に2つの方法があります。

  1. プラグインを使う
    初心者におすすめ。ドラッグ&ドロップで直感的に操作可能。
  2. PHPコードを使う
    中級者以上向け。カスタムフィールドを活用して、柔軟な設定が可能。
    「コード」と聞くと難しそうに感じますが、今回はコピペで使える形にしています。

それぞれのメリット・デメリットを整理しました。

プラグイン vs PHP の比較

項目プラグインPHP
難易度初心者向け、簡単中級者以上向け
操作方法ドラッグ&ドロップカスタムフィールドに数値を入力
自由度制限あり高い(条件分岐も可能)
おすすめシーンとにかく手軽に並べ替えたい細かい条件で制御したい

ポイントは「手軽さ重視ならプラグイン、柔軟性重視ならPHP」です。

プラグインで並べ替える方法

一番手軽なのは「Post Types Order」というプラグインを使う方法です。

  • 投稿一覧ページで記事をドラッグ&ドロップするだけで順番を変えられる
  • カテゴリーごとの並べ替えにも対応
  • カスタム投稿タイプでも使用可能

インストール後は「投稿一覧」画面に移動し、記事をつかんで動かすだけ!とてもシンプルなので、コードが苦手な方には断然おすすめです。

PHPで設定する方法

もっと柔軟に制御したい場合は、カスタムフィールド+PHPコードで並べ替えを設定します。

1. 記事の順番を設定する方法

PHPで記事の順番を制御するには、カスタムフィールドを使います。

カスタムフィールドの設定

カスタムフィールドの有効化

  1. WordPressの管理画面で「投稿編集画面」を開きます。
  2. 画面右上の「表示オプション」をクリックし、「カスタムフィールド」にチェックを入れて有効化します。

カスタムフィールドに数値を入力

  1. 各記事に「カスタムフィールド」を追加します。
  2. カスタムフィールドにキー名 display_order を追加設定します(PHPコードで指定するキーと一致させる必要あり)。
  3. 値に記事の順番を数値(1,2,3…)で入力。小さい数字ほど上に表示されます。

2. PHPコードで並び替えを有効にする

コードをfunctions.phpに追加します。
バックアップは忘れずに!!

functions.phpの設定場所

ダッシュボード→外観→テーマファイルエディタを開くと、右側に『テーマのための関数』があります。

ここにコードを入力していきます。

カテゴリーIDの調べ方

コード内の is_category('カテゴリーID') に入れる「カテゴリーID」は、WordPress管理画面から確認できます。

  1. ダッシュボード → 「投稿」 → 「カテゴリー」を開く
  2. 並び替えしたいカテゴリー名にマウスを合わせる
  3. 画面左下やURLに表示される tag_ID=◯◯ の数字がカテゴリーID

例えば、tag_ID=15 と表示されていた場合は、コードを以下のように変更します。

is_category('15')

functions.phpにコードを追加

functions.phpに以下のコードを追加することで、display_orderに入力した数値に基づいて並び替えが適用されます。

function custom_query_orderby($query) {
    if (is_category('カテゴリーID') && $query->is_main_query()) { // カテゴリーIDを指定
        $query->set('meta_key', 'display_order'); // カスタムフィールドのキー
        $query->set('orderby', 'meta_value_num'); // 数値で並べ替え
        $query->set('order', 'ASC'); // 昇順
    }
}
add_action('pre_get_posts', 'custom_query_orderby');

動作の仕組み

  • is_category('カテゴリーID'): このカテゴリーIDの場合のみ、並び替えを適用します。他のカテゴリーに適用したい場合は、IDを変更します。
  • meta_keymeta_value_num: meta_keyでカスタムフィールドの名前(ここではdisplay_order)を指定します。記事はdisplay_orderに入力した数値で並べ替えられます。
  • orderパラメータ: 並び順を指定します。
    • ASC: 昇順(小さい数値から順に表示)。
    • DESC: 降順(大きい数値から順に表示)。

PHPコードがうまく動かない時にチェックすること

いざコードを入れてみたものの、反映されず「順番がぐちゃぐちゃになってしまう……」などうまく動かない時は、以下のポイントをチェックしてみてください。

  • 一覧から記事が消える原因で一番多いのはこれ。:display_orderが設定されていない記事がある
    上記のPHPコードは、「display_orderというカスタムフィールドを持っている記事」を対象に並び替える仕組みになっています。そのため、そのカテゴリー内で1記事でもカスタムフィールドの設定が漏れていると、その記事自体が一覧から消えてしまう(表示されなくなる)という現象が起きます。
    必ずそのカテゴリーに属する「すべての記事」にキーと数値を設定してください。
  • 数字が重複していないか
    同じ数字(たとえば「2」が2つあるなど)があると、意図しない順番になる場合があります。

さいごに

私が並べ替えたかったのは「ヒューマンデザインとは?」というカテゴリーの記事。読んでほしい記事ほど先に書いていたので、時間が経つにつれて埋もれてしまい、新しい読者さんに届きにくくなっていました。整理できて大満足!
自分のサイトを使いやすくできるのは楽しいですね🎵

ぜひあなたのサイトでも活用してみてください😊


この記事を書いた人
クスリ嫌いな薬剤師
Shizuka

「なにこれ?!」と思った気づきや、「これいいかも!」と感じた知識や「役立つ学び」情報をまとめています。
ヒューマンデザインをベースにした「自分を知ること」や、薬剤師だからこその薬に頼りすぎない心と体の調和を大切にしています。
私自身の好奇心が、誰かの光につながる小さなヒントになればうれしいです。

Shizukaをフォローする
WordPressテクノロジー
スポンサーリンク
シェアする
Shizukaをフォローする

コメント

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