カテゴリー内の記事が新着順になっていると、読者にとって少し分かりにくい場合がありませんか??
この度、記事を自由に並べ替えられるよう解決したので、プラグインを使った簡単な方法と、PHPコードを活用したカスタマイズ性の高い方法を比較しながら、具体的な手順を解説します。
同じ悩みを持つ方の参考になれば幸いです。
カテゴリー内の記事を並べ替える方法
記事の並べ替えには2つの方法があります。
- プラグインを使う
初心者におすすめ。ドラッグ&ドロップで簡単に記事を並べ替えられます。 - PHPコードを使う
中級者以上向け。カスタムフィールドを活用して、柔軟な設定が可能。
プラグインの『Post Types Order』は記事の順番をドラッグ&ドロップで変更可能で、カテゴリー別やカスタム投稿タイプにも対応しているようです。(私は未使用なので詳細不明)
プラグイン vs PHP の比較
項目 | プラグインを使う場合 | 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
: 降順(大きい数値から順に表示)。
さいごに
私が並べ替えたかったのは
初めての方に見ていただきたい
「ヒューマンデザインとは?」
のカテゴリー記事。
基本的な内容は古い記事になっているので
わかりやすく整理することで
興味を持ってもらった人へ親切な構成にできました。
カスタマイズできることが、またひとつ増えて楽しい🎵
ちなみにカスタムフィールドの数字は
きっちり順に使用しないと
バグを起こしますのでご注意を。
よければ使用してみてくださいね!!
コメント