サポート » 使い方全般 » チェックボックスで検索する方法

  • チェックボックスを使い、カスタムフィールドの値を検索したいと思っております。
    下記のサイトを参考にさせて貰い、コードを記述しました。

    ※参考サイト
    【WordPressでカスタムフィールドの部分一致検索ができた】
    http://www.tecking.org/archives/2636

    問題の動作ですが、チェックをつけて検索をしますと
    該当のカスタムフィールドが空欄でないもの全てを拾ってきてしまいます。

    ・カスタムフィールドのキーが「勤務地」
    ・値が「東京」「品川」「新宿」と投稿記事毎に違います。

    「東京」にチェックをつけたら、「東京」の記事を、
    「東京」「品川」にチェックをつけたら、「東京」の記事と
    「品川」の記事を表示させたいと思っております。

    検索機能について知識が浅く、大変恐縮ですが
    下記にコードを記述しましたので、ご指導いただければと思います。
    よろしくお願いします。

    functions.php

    global $my_public_query_vars;
    $my_public_query_vars = array( '勤務地' );
    
    add_filter( 'query_vars', 'my_query_vars' );
    function my_query_vars( $public_query_vars ) {
    	global $my_public_query_vars;
    	return array_merge( $public_query_vars, $my_public_query_vars );
    }
    
    add_action( 'pre_get_posts', 'my_pre_get_posts' );
    function my_pre_get_posts( $query ) {
    		$meta_query = array();
    
    		global $my_public_query_vars;
    		foreach ( $my_public_query_vars as $key ) {
    			if ( $val = $query->get( $key ) ) {
    			$meta_query[] = array(
    				'key'   => $key,
    //				'value' => $val,
    - 'value' => $val,
    + 'value' => $val,
    + 'compare' => '='
    
    				);
    			}
    		}
    
    		if ( ! empty( $meta_query ) ) {
    			$query->set( 'meta_query', $meta_query );
    		}
    }

    search.php

    <form method="get" id="searchform-parking" action="<?php bloginfo( 'url' ); ?>">
    	<input type="checkbox" class="field" id="勤務地" name="勤務地" value="東京"/>東京<br />
    	<input type="checkbox" class="field" id="勤務地" name="勤務地" value="新宿"/>新宿<br />
    	<input type="checkbox" class="field" id="勤務地" name="勤務地" value="品川"/>品川<br />
    	<input type="submit" class="submit" name="submit" id="searchsubmit-parking" value="検索" />
    </form>

  • トピック「チェックボックスで検索する方法」には新たに返信することはできません。