サポート » 使い方全般 » カスタムフィールドの絞り込み検索(ANDとORの混在)

  • カスタムフィールドで以下のような値を設定しています。
    ・フィールド名:”subject” 値:”内科,小児科,神経内科”
    ・フィールド名:”open” 値:”mon,tue,wed,fri”

    実現したい検索内容は
    「内科or小児科」かつ「水曜or木曜」に診療している病院 です。

    現在、診療科目のみの検索は下記のように実現できています。
    [function.php]

    function customize_main_query($query) {
    	if ( is_admin() || ! $query->is_main_query() ){
    		 return;
    	 }
    
     	if ( isset($query->query['s']) ){
    		 $query->is_search = true;
     	}
    
    	 $condition = array();
    
    	if( isset($query->query['post_type']) && ($query->query['post_type'] == 'hospital') ) {
    		 if ( isset($query->query['subject']) ){
    			 foreach ($query->query['subject'] as $name){
    				$condition[] = array('key' => 'hospital_subject', 'value' => $name, 'compare' => 'LIKE');
    			 }
     			$condition['relation'] = 'OR';
    		 }
    	 }
    
    	if ( $query->is_search() ){
    		$query->set( 'posts_per_page', '50' );
    		$query->set( 'order', 'ASC' );
    		$query->set( 'meta_query', $condition );
    	}
    }
    add_action( 'pre_get_posts', 'customize_main_query' );

    これに診療曜日の条件を加えるにはどうすればよいでしょうか。


    そもそも、
    ・カスタムフィールドではなくカスタムタクソノミーにすべき?
    ・pre_get_postsでよいのか?posts_searchか?
    という点も気になっています。

    他の投稿タイプ(飲食店、サロンなど)も同様に絞り込み検索を実装予定で、
    pre_get_postsにずらずらと書き並べていってよいものか疑問です。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    カスタムタクソノミーにすべきです。

    トピック投稿者 mamap

    (@mamap)

    jim912さん、お返事ありがとうございます。
    お礼が遅くなってしまい申し訳ございません。

    ご回答を頂いてから、改めてタクソノミーについて調べてみました。
    まだ完全には理解しきれていませんが、
    タクソノミーにすれば上記のような問題も起きないようですね。
    タクソノミーに変更する方向で進めてみます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドの絞り込み検索(ANDとORの混在)」には新たに返信することはできません。