query_posts カスタムフィールドで入力した数値で記事をソートする方法

/ WordPress / Comment[0]

例えばこんなカスタムフィールドがあるとします。
Custom Field Templateの設定

[number]
label = 番号
type = text

上記の場合、スラッグがnumberとなります。このnumberの値を数値(int)として記事をソートをするにはちょっと工夫が必要です。
通常、カスタムフィールドの値で記事のソートを行う際は以下のようにquery_postsの引数に「meta_key」「orderby = meta_value」を指定することで可能となります。

$args = array(
  'meta_key' => 'number',
  'orderby' => 'meta_value',
  'order' => ASC
);
query_posts( $args );

しかし、カスタムフィールドのtype=textの値は文字(string)として扱われてしまう為、期待通りのソート結果は得られません。
そこで以下のように、query_postsの引数に「meta_query」でデータ型も指定してやると期待通りのソートが可能になります。

$args = array(
  'meta_query' => array(
    array( 'key'  => 'number',
           'type' => 'NUMERIC'
    )
  ),
  'orderby' => 'meta_value',
  'order' => ASC
);
query_posts( $args );
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可