カテゴリー内の記事を新着順ではなく、好きな順番に並べ替えたい!と思ったことはありませんか??
読んでもらいたい順番で表示できたら・・・とずっと悩んでいましたが、試行錯誤の末に記事を自由に並べ替えられる2つの方法に辿り着きました。
- プラグインを使って簡単に並べ替える方法
- PHPコードを活用した方法
同じように困っている方の参考になれば嬉しいです。
カテゴリー内の記事を並べ替える方法
記事の並べ替えは、主に2つの方法があります。
- プラグインを使う
初心者におすすめ。ドラッグ&ドロップで直感的に操作できます。 - PHPコードを使う
中級者以上向け。カスタムフィールドを活用して、柔軟な設定が可能。
それぞれのメリット・デメリットを表で整理しました。
プラグイン vs PHP の比較
| 項目 | プラグイン | PHP |
|---|---|---|
| 難易度 | 初心者向け、簡単 | 中級者以上向け |
| 操作方法 | ドラッグ&ドロップ | カスタムフィールドに数値を入力 |
| 自由度 | 制限あり | 高い(条件分岐も可能) |
| おすすめシーン | とにかく手軽に並べ替えたい | 細かい条件で制御したい |
ポイントは「手軽さ重視ならプラグイン、柔軟性重視ならPHP」です。
プラグインで並べ替える方法
一番手軽なのは「Post Types Order」というプラグインを使う方法です。
- 投稿一覧ページで記事をドラッグ&ドロップするだけで順番を変えられる
- カテゴリーごとの並べ替えにも対応
- カスタム投稿タイプでも使用可能
インストール後は「投稿一覧」画面に移動し、記事をつかんで動かすだけ!とてもシンプルなので、コードが苦手な方には断然おすすめです。
PHPで設定する方法
もっと柔軟に制御したい場合は、カスタムフィールド+PHPコードで並べ替えを設定します。
1. 記事の順番を設定する方法
PHPで記事の順番を制御するには、カスタムフィールドを使います。
カスタムフィールドの設定カスタムフィールドの設定
カスタムフィールドの有効化
- WordPressの管理画面で「投稿編集画面」を開きます。
- 画面右上の「表示オプション」をクリックし、「カスタムフィールド」にチェックを入れて有効化します。
カスタムフィールドに数値を入力
- 各記事に「カスタムフィールド」を追加します。
- カスタムフィールドにキー名
display_orderを追加設定します(PHPコードで指定するキーと一致させる必要あり)。 - 値に記事の順番を数値(1,2,3…)で入力。小さい数字ほど上に表示されます。
2. PHPコードで並び替えを有効にする
コードをfunctions.phpに追加します。
バックアップは忘れずに!!
functions.phpの設定場所
ダッシュボード→外観の右側に『テーマのための関数』があります。
ここにコードを入力していきます。

functions.phpにコードを追加
functions.phpに以下のコードを追加することで、display_orderに入力した数値に基づいて並び替えが適用されます。
function custom_query_orderby($query) {
if (is_category('212') && $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('212'): カテゴリーIDが「212」の場合のみ、この並び替えを適用します。他のカテゴリーに適用したい場合は、IDを変更します。meta_keyとmeta_value_num:meta_keyでカスタムフィールドの名前(ここではdisplay_order)を指定します。記事はdisplay_orderに入力した数値で並べ替えられます。orderパラメータ: 並び順を指定します。ASC: 昇順(小さい数値から順に表示)。DESC: 降順(大きい数値から順に表示)。

さいごに
私が並べ替えたかったのは「ヒューマンデザインとは?」というカテゴリーの記事。古い記事も多かったので、新しい読者さんが迷わないように整理できて大満足!
自分のサイトを使いやすくできるのは楽しいですね🎵
※注意点:カスタムフィールドの値は「1,2,3…」ときっちり連番にしないとエラーが出る場合があります。
ぜひあなたのサイトでも活用してみてください😊


コメント