• カスタム投稿+カスタムフィールド投稿の検索機能がうまく作動しません。

    検索フォーム

    	<coda>
    		<form method="get" action="<?php bloginfo( 'url' ); ?>">
    			<input type="hidden" name="post_type" value="clinic">
    			<input name="s" id="s" type="text" />
    			<input id="submit" type="submit" value="" />
    		</form>
    	</coda>
    

    function.php

    	
    		function custom_search($search, $wp_query) {
    			//サーチページ以外だったら終了
    			if (!$wp_query->is_search) return;
    			//投稿記事のみ検索
    			$search .= " AND post_type = 'clinic' ";
    			return $search;
    		}
    		add_filter('posts_search','custom_search', 10, 2);
    	
    

    serch.php

    	
    		<?php
    			global $wpdb;
    			// If you use a custom search form
    			// $keyword = sanitize_text_field( $_POST['keyword'] );
    			// If you use default WordPress search form
    			$keyword = get_search_query();
    			$keyword = '%' . like_escape( $keyword ) . '%'; // Thanks Manny Fleurmond
    			// Search in all custom fields
    			$post_ids_meta = $wpdb->get_col( $wpdb->prepare( "
    			SELECT DISTINCT post_id FROM {$wpdb->postmeta}
    			WHERE meta_value LIKE '%s'
    			", $keyword ) );
    			// Search in post_title and post_content
    			$post_ids_post = $wpdb->get_col( $wpdb->prepare( "
    			SELECT DISTINCT ID FROM {$wpdb->posts}
    			WHERE post_title LIKE '%s'
    			OR post_content LIKE '%s'
    			", $keyword, $keyword ) );
    			$post_ids = array_merge( $post_ids_meta, $post_ids_post );
    			// Query arguments
    			$args = array(
    				'post_type'   => 'post',
    				'post_status' => 'publish',
    				'post__in'    => $post_ids,
    			);
    			$query = new WP_Query( $args );
    			if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();
    		?>
    	
    

    以下中略

    カスタムフィールド投稿の内容としては、

    ・都道府県
    ・市区町村
    ・丁目以下番地

    という風にしてあります。

    検索したいときに、都道府県市区町村丁目以下番地

    例:京都府京田辺市花住坂x丁目xx-xx

    を検索ヒットしたい。

    どなたか教授ください。

    注)
    search.php
    は他業者が作成したため、都道府県別のみだけ検索になっております。

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