WordPress

WordPress で投稿一覧をカスタムフィールドの値でソートする方法

WordPress で投稿一覧をカスタムフィールドの値でソートして表示する方法を紹介します。
例えば、投稿をカスタムフィールドの値でソートしたい時に便利な方法です。

  1. 投稿一覧をカスタムフィールドの値でソートする
    1. ソートの条件を変更する
  2. カスタムフィールド値が日付の場合に日付でソートする方法
    1. カスタムフィールド値のデータ型を指定する

投稿一覧をカスタムフィールドの値でソートする

投稿一覧をカスタムフィールドの値でソートする場合は meta_query を使用します。
例えば、カスタム投稿タイプが products、カスタムフィールド名が 商品 の場合、フィールド値が ラジオ の投稿を取得する方法を紹介します。

<?php // 投稿をカスタムフィールドの値でソートする
$custom_field_value = 'ラジオ'; // フィールド値の指定
$args = array(
'post_type' => 'products', // 投稿タイプを指定
'posts_per_page' => -1, // 表示件数を指定
'meta_query' => array( // カスタムフィールドを指定
array(
'key' => '商品', // フィールド名の指定
'value' => $custom_field_value, // 値の指定
'compare' => 'LIKE' // フィールド値の部分一致
)
)
);
$the_query = new WP_Query($args); if($the_query->have_posts()):
?>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<!-- 投稿が無い場合の処理 -->
<?php endif; ?>

カスタムフィールド名を変更する場合は 'key' => ’商品’,商品 を任意の値に変更。
カスタムフィールド値を変更する場合は $custom_field_value = 'ラジオ’;ラジオ の値を変更してください。

ソートの条件を変更する

ソートの条件を変更する場合は 'compare' => 'LIKE'LIKE を変更します。
変更できる compare の値は次の通りです。

‘=’
値と一致する
‘!=’
値と一致しない
‘>’
値より大きい
‘>=’
値以上
‘<'
値より小さい
‘<='
値以下
‘LIKE’
値で指定した文字列に一致する
‘NOT LIKE’
値で指定した文字列に一致しない
‘IN’
値(配列)で指定したいずれかに一致する
‘NOT IN’
値(配列)で指定したいずれにも一致しない
‘BETWEEN’
2つの値で指定した範囲内(境界を含む)
‘NOT BETWEEN’
2つの値で指定した範囲外

カスタムフィールド値が日付の場合に日付でソートする方法

カスタムフィールド値が日付の場合に、その日付の順番でソートする方法を紹介します。
例えば、カスタム投稿タイプが event、カスタムフィールド名が 開催日 の場合に、各投稿のカスタムフィールド値の日付の順番でソートして表示します。

  $args = array( // クエリの作成
'post_type' => 'event', // 投稿タイプの指定
'orderby' => 'meta_value_num', // カスタムフィールド値が数値の場合 meta_value_num を指定
'posts_per_page' => -1, // すべての投稿を表示
'meta_query' => array( // カスタムフィールドの指定
array(
'key' => '開催日', // フィールド名の指定
'type'=>'DATE' // カスタムフィールドの値が日付であることを宣言
)
)
);

数値の桁数が違う場合は意図した順番にならない場合があります。
ソートする値は同じ桁数や書式で用意するようにしてください。

カスタムフィールド値のデータ型を指定する

カスタムフィールドの値は文字列や数値、日付など色々あるので type にデータの型を指定してあげます。
型の種類は次の通りです。

‘CHAR’
カスタムフィールド値が文字
‘NUMERIC’
カスタムフィールド値が’SIGNED’の別名
‘DECIMAL’
カスタムフィールド値が浮動小数点数
‘SIGNED’
カスタムフィールド値が整数(符号あり)
‘UNSIGNED’
カスタムフィールド値が整数(符号なし)
‘DATE’
カスタムフィールド値が日付
‘DATETIME’
カスタムフィールド値が日時
‘TIME’
カスタムフィールド値が時刻
‘BINARY’
カスタムフィールド値がバイナリー

まとめ

WordPress で投稿一覧をカスタムフィールドの値でソートして表示する方法を紹介した。
その他、投稿の詳しい取得方法はWordPress 基本的なループの表示方法を紹介をご覧ください。

この記事をシェアする