カスタムフィールドの値で絞り込みし、他のカスタムフィールドの値でソートする
wordpressカスタムフィールドの値で絞り込みをし、他のカスタムフィールドの値でソートしたいとき。
あるカスタムフィールドの値で絞り込みをし、あいうえお順でソートするやり方がわからずハマったので。
<?php
query_posts(
array(
'meta_key' => 'kana', //並べ替えたいカスタムフィールドキー
'orderby' => 'meta_value', //meta_valueの値で並べる
'order' => 'ASC', //昇順で順序付け
'meta_query' => array(
'key' => 'like_fruits', //絞り込みたいカスタムフィールドキー
'value' => 'apple', //like_fruitsの値がappleのもののみを出力
'compare' => '=', //値と一致する
)
)
);
if (have_posts()) : while (have_posts()) : the_post(); ?>
<!-- 何か処理 -->
<?php endwhile;
else : ?>
<p>お探しの記事はございませんでした</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
絞り込むカスタムフィールドが複数の時
<?php query_posts( array(
'meta_key' => 'kana',//並べ替えたいカスタムフィールドキー
'orderby' => 'meta_value', //meta_valueの値で並べる
'order' => 'ASC',//昇順で順序付け
'meta_query' => array( array(
'key'=>'like_fruits',//絞り込みたいカスタムフィールドキー
'value'=>'apple',//like_fruitsの値がappleのもののみを出力
'compare'=>'=',//値と一致する ),
array( 'key'=>'like_drink',//絞り込みたいカスタムフィールドキー
'value'=>'green_tea',//like_drinkの値がgreen_teaのもののみを出力
'compare'=>'=',//値と一致する ),
'relation' => 'AND' ) ) );
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
relationは複数の抽出条件の結合方法を指定します。ここは’AND’で、複数条件に一致したものだけを出します、
‘OR’にすると、like_fruitsがappleかlike_drinkがgreen_teaのものどちらかの条件を満たすものが出ます。