サポート » 使い方全般 » Advanced Custom Fields カスタムフィールドで検索

  • 投稿にAdvanced Custom Fields プラグインを使用しています。

    投稿タイプ:post

    チェックボックスを使って複数選択できる検索をしたいのですがうまく動作しません。
    あるサイトを参考に searchform.php と search.php を作成しました。
    searchform.php からの入力を search.php の WP_Query で受け取る感じです。

    検索対象のカスタムフィールドは3つ aaa 、bbb 、ccc
    aaa 、bbb は selectでデータを入力 => それぞれ一つの値が入っています。
    ccc は checkbox でデータを入力 => それぞれ複数の値が入っている場合があります。

    ・現在はどのような検索条件を指定しても全てのデータが表示されます。
    ・フリーワード用にテキストフィールドも設置していますが、search.php でどのように扱っていいかも不明です。
    ・ページネーションも必須になってくるのでそのあたりもお教え頂けますと幸いです。

    searchform.php

    <form action="<?php bloginfo( 'url' ); ?>/" method="get">
        <fieldset>
            <label for="search">Search in <?php bloginfo( 'name' ); ?></label>
    
    		<!-- aaa カスタムフィールドへの入力は select です、各データにタイプA1〜5のいずれかが入力されています -->
    		<input type="checkbox" name="aaa[]" value="タイプA1"  > タイプA1
    		<input type="checkbox" name="aaa[]" value="タイプA2"  > タイプA2
    		<input type="checkbox" name="aaa[]" value="タイプA3"  > タイプA3
    		<input type="checkbox" name="aaa[]" value="タイプA4"  > タイプA4
    		<input type="checkbox" name="aaa[]" value="タイプA5"  > タイプA5
    
    		<!-- bbb カスタムフィールドへの入力は select です、各データにタイプB1〜5のいずれかが入力されています -->
    		<input type="checkbox" name="bbb[]" value="タイプB1"  > タイプB1
    		<input type="checkbox" name="bbb[]" value="タイプB2"  > タイプB2
    		<input type="checkbox" name="bbb[]" value="タイプB3"  > タイプB3
    		<input type="checkbox" name="bbb[]" value="タイプB4"  > タイプB4
    		<input type="checkbox" name="bbb[]" value="タイプB5"  > タイプB5
    
    		<!-- ccc カスタムフィールドへの入力は checkbox です、各データにタイプC1〜5のうち複数入力されている場合があります -->
    		<input type="checkbox" name="ccc[]" value="タイプC1"  > タイプC1
    		<input type="checkbox" name="ccc[]" value="タイプC2"  > タイプC2
    		<input type="checkbox" name="ccc[]" value="タイプC3"  > タイプC3
    		<input type="checkbox" name="ccc[]" value="タイプC4"  > タイプC4
    		<input type="checkbox" name="ccc[]" value="タイプC5"  > タイプC5
    
    		<input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
    
            <button type="submit">検索</button>
        </fieldset>
    </form>

    search.php

    <?php
    	$aaa = $_GET['aaa'];
    	$bbb = $_GET['bbb'];
    	$ccc = $_GET['ccc'];
    	//テキストフィールドの値をどうしたらよいか、、、
    
    	$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    	$args = array(
    		'paged'      => $paged,
    		'post_type'  => 'post',
    		'meta_query' => array(
    			array(
    				'key'     => 'aaa',
    				'value'   => $aaa,
    				'compare' => 'LIKE',
    			),
    			array(
    				'key'     => 'bbb',
    				'value'   => $bbb,
    				'compare' => 'LIKE',
    			),
    			array(
    				'key'     => 'ccc',
    				'value'   => $ccc,
    				'compare' => 'LIKE',
    			),
    		 'relation' => 'AND',
    		)
    	);
    	$the_query = new WP_Query($args);
    ?>
    <ul>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    	<li>
    	<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    	<p>カスタムフィールドの値をいくつか表示します。</p>
    	</li>
    <?php endwhile; ?>
    </ul>
    <?php the_posts_pagination( array( 'mid_size' => 3, 'prev_text' => '<<', 'next_text' => '>>', 'screen_reader_text' => 'pagenation',  )); ?>
    
    <?php wp_reset_postdata(); ?>

    WP バージョン 4.1.1–ja
    Advanced Custom fields 最新

  • トピック「Advanced Custom Fields カスタムフィールドで検索」には新たに返信することはできません。