【WordPress】WP_Queryで「順序」を含む複数条件でソート

Blog Admin
Blog Admin

ページの一覧を構成するとき、並び順を管理しやすくしたいのです。
最初から備わっている「順序」項目をうまく活用したいです。

WordPress

WordPress
クエリ結果を
複数条件でソート

WordPressで投稿を一覧にしたいときなどに使うWP_Queryです。
まるでSQLですね。
抽出条件の指定に加えて、ソート条件も指定可能です。

そのソート条件に関して、単一ではなく、複数条件にしたいというお話です。
単一条件の場合と異なる書き方になります。

やりたかったこと

固定ページやカスタム投稿タイプに関する話だと思います。
一覧化するときにカスタマイズしたページを構成したいのです。
並び順(ソート)の話です。

インターフェース

管理画面のページ一覧には、「順序」という項目があります。
デフォルトでは、数字が小さい方から大きい方へ並ばせるような使い方です。
昇順です。

今回は、重みづけのようなかたちで、数字が大きい方から並べたいと考えました。
降順です。
もちろんマイナス値にして管理してもよいのですが。。
後で分かりにくくなるのもよろしくないと考えました。

WordPress

もともと存在する項目を使えれば、以降の管理も楽だろうという考え方です。
クイック編集で値を調整することで、並び順も調整できます。

加えて、カスタムフィールドなどの他の要素もソート順に加えたい考えです。

  1. 「順序」を正の数で重みづけ
  2. 投稿日が古いものから

ここでは上記で考えます。
2番目のソート条件は、明記してもしなくても変わらないわけですが。
書き方の備忘録なので。

やったこと

WordPress

WP_Queryでページを抽出します。
その際に、並び順も指定します。

並べるときの条件は複数のカラムを指定可能です。

PHPの編集です。
外観のテーマファイルエディターで、対象のファイルを選んで、対応する部分を書き替えました。

'order'は書かずに'orderby'のみを配列で書く

書き方のお作法を調べると、'orderby'にて、カラムとソート方向を配列で指定できます。
複数条件の場合はこの書き方です。
そのときに'order'は書きません。

'orderby' => array('menu_order'=>'DESC', 'post_date'=>'ASC')

WordPressでは、単一カラムでのソートの場合、ソートの方向とカラムを別プロパティに指定する書き方ですよね。
なんだか独特です。

よくある書き方は以下ですが。
今回はこれではないです。

// よく見る書き方ですが、今回はこちらではありません。
'order' => 'DESC' // 降順を指定
'orderby' => 'menu_order' // 「順序」カラムを指定

書いたコード(コピペできるはず)

デフォルメしていますが、肝心な部分はコピペして使えるはずです。

先にクエリ用の文言を作成

$args = array(
    // (省略)
    'orderby' => array(
        'menu_order' => 'DESC',
        'post_date' => 'ASC',
    ),
    // (省略)
);

menu_order」が「順序」です。
ページ編集画面や一覧画面のクイック編集などで設定できる値です。
整数値です。
今回は、数字が大きいほど重い → 大きいほど上位 という考え方で整理する予定なので、降順(DESC)にしています。

今回のポイントでした

post_date」は「投稿日」です。
昇順(ASC)なので、古いほうから並んでいきます。
これはデフォルト値なので、あえて書かなくても大丈夫なものですね。

作成した文言でクエリ発行

$query = new WP_Query($args)

変数にクエリを書いておくやり方です。
いちいち格納せず、その場で構成する方法もありますね。

WP_Queryの使い方(公式ドキュメント)

参考文献です。
公式のマニュアルです。情報量が多く、ページ表示に時間がかかります。

通信環境やブラウザーによっては、応答しなくなる時間が発生するかもしれないです。
ページ表示まで焦らずに待ちましょう。

↓ ↓ ↓ ソートの部分を触接見たい場合 ↓ ↓ ↓

この投稿を書いたのは・・・
Blog Admin

ガジェットが大好きで、ほぼ毎月何かしら調達しております。
無駄遣い扱いされたくないのと、何かの役に立つかと思い、記録を書くことにしたのでした。

お出かけのときには、スマホを複数台とタブレットとパソコンを持ち歩きます。
両手首にはスマートウォッチです。
こんなスタイルで生活している中での備忘録を書いています。

「Blog Admin」をフォローしてみる
ブログ関連
「Blog Admin」をフォローしてみる

ご意見やご感想などお聞かせください! コメント機能です。

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