カスタムフィールドの値で複数検索を実装したいとおもっています。
カスタムフィールドが空(未記入)の場合があり、その際にどれか一つの分類を指定して検索を実行しても表示されません。
現状下記のようなコードになってます。
meta_queryの条件分岐かと思ってはいますが、書き方も分からず、うまくいきません。
どうぞ、お力をお貸しください。
<?php $search1 = $_GET['分類1']; $search2 = $_GET['分類2']; $search3 = $_GET['分類3']; $args = array( 'posts_per_page' => -1, 'order' => 'DESC', 'orderby' => 'name', 'category_name' => $cat_slug, 'paged' => get_query_var( 'paged' ), 'meta_query' => array( array( 'key'=>'分類1', 'value'=>$search1, 'compare'=>'like', ), array( 'key'=>'分類2', 'value'=>$search2, 'compare'=>'like', ), array( 'key'=>'分類3', 'value'=>$search3, 'compare'=>'like', ), 'relation'=>'AND' ) ); $wp_query= null; $wp_query = new WP_Query(); $wp_query->query($args); ?>
追記:
カスタムフィールド内で以下のようにしています。
商品A (分類1)
商品B (分類1)(分類2)
商品C (分類1)(分類3)
分類2と分類3に値が入っていたり入っていなかったりするためか、
検索結果がうまく表示できないです。
分類2と分類3をORでくくる方法も試してみたのですが、
分類1だけでの検索が「見つかりません」になってしまします。
'meta_query' => array( array( 'key'=>'分類1', 'value'=>$search1, 'compare'=>'like', ), array( 'relation' => 'OR', array( 'key'=>'分類2', 'value'=>$search2, 'compare'=>'like', ), array( 'key'=>'分類3', 'value'=>$search3, 'compare'=>'like', ), ), 'relation'=>'AND' )
回答1件
あなたの回答
tips
プレビュー