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

WordPress 投稿の取得条件にカスタムフィールドの値を使用して、投稿一覧を取得する方法を紹介します。
例えば、カスタムフィールドの値を条件に投稿一覧を取得するのに便利な方法です。

カスタムフィールドの値でソートする

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

<?php // 投稿をカスタムフィールドの値でソートする
$custom_field_value = 'radio'; // フィールド値の指定
$args = array(
'post_type' => 'products', // 投稿タイプを指定
'posts_per_page' => -1, // 表示件数を指定
'meta_query' => array( // カスタムフィールドを指定
array(
'key' => 'type', // フィールド名の指定
'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; ?>

フィールド値を変更する場合は $custom_field_value = 'radio’;radio の値を変更してください。
フィールド名を変更する場合は 'key' => ’type’,type を任意の値に変更。
ソートの条件を指定する場合は 'compare' => 'LIKE'LIKE を変更します。compare で変更できる値は次の通りです。

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

その他、投稿の詳しい取得方法はWordPress 基本的なループの表示方法を紹介をご覧ください。

まとめ

WordPress 投稿の取得条件にカスタムフィールドの値を使用して、投稿一覧を取得する方法を紹介しました。

スポンサーリンク

私が続けて読みたい関連記事