🐙

get_posts()とWP_Queryでorderbyを複数指定

2022/04/06に公開約900字

下記のコードでカスタム投稿(origin_post)を取得します。
メタデータの"優先順位"というキーの値を参照し昇順(ASC)で取得され、
"優先順位"の値が同じ場合は"ID"の値を参照し昇順で取得されます。

ポイントは、meta_queryの配列キーを設定。(この記事ではarr_key1)
その配列キーをorderbyのキーに指定している所。

<?php
$args = array(
   'post_type' => 'origin_post',
   'posts_per_page' => -1,
   'post_status' => array('publish'),
   'orderby' => array('arr_key1' => 'ASC', 'ID' => 'ASC'),
   'meta_query' => array(
       'relation' => 'AND',
       'arr_key1' => array(
           'key' => '優先順位',
           //'value' => '今回のケースでは使用しない',
           'type' => 'NUMERIC', // 'NUMERIC'(数値)、'BINARY'(バイナリ)、'CHAR'(文字列)、'DATE'(日付)、'DATETIME'(日時)、'DECIMAL'(少数)、'SIGNED'(符号付き整数)、'TIME'(時間)、'UNSIGNED'(符号なし整数)。デフォルト値は'CHAR'。
           'compare' => 'EXISTS', // 使える値は'='、'!='、'>'、'>='、'<'、'<='、'LIKE'、'NOT LIKE'、'IN'、'NOT IN'、'BETWEEN'、'NOT BETWEEN', 'EXISTS' (WP3.5以降), and 'NOT EXISTS' (同じくWP3.5以降)。デフォルト値は'='。
       ),
   ),
);
$post_datas = get_posts($args);
?>

WP_Queryでも同じように使用可能です。

お役に立ったら「いいね」をお願いします。

Discussion

ログインするとコメントできます