前提
検索欄(front-page.php)と受け取り側(search.php)の2ファイルを用意
実現したいこと
カスタムフィールド名で絞り込み検索を実装したい
発生している問題・エラーメッセージ
検索条件にヒットした募集はありませんでした。と表示されており、検索ページをどのように作成すればいいのかアドバイスをお願いいたします。 front.page.phpに表示しているコンテンツを検索ページにも表示したいです。
該当のソースコード
front-page.php <?php//検索に使用されるページのセクションを識別するために使用,actionはリダイレクトさせたいページ?> <form role="search" method="get" id="searchform" class="searchform" action="http://example.com/"> <div class="hole"> <div class="left"> <label class="screen-reader-text" for="s">キーワード検索</label> </div> <div class="right"> <input type="text" value="" name="s" id="s" placeholder="例)年齢不問"/> <button type="submit" id="searchsubmit"><i class="fa fa-search"></i> 検索</button> </div> </div> </form>
search.php <form method="get" class="single1-search" action="<?php echo esc_url( home_url( '/' ) ); ?>" > <input type="hidden" name="post_type" value="post"> <input type="text" placeholder="<?php if(!is_search()){ echo 'テストから探す';} ?>" value="<?php if(is_search()){ echo get_search_query();} ?>" class="test-searchbody" name="s"> <button type="submit" class="test-searchbutton"></button> </form> <?php $search_query = get_search_query(); ?> <?php global $wpdb; ?> <?php $results = $wpdb->get_results($wpdb->prepare(" FROM $wpdb->postmeta INNER JOIN $wpdb->posts ON post_id = ID WHERE {$wpdb->postmeta}.meta_key IN ('single_rss_feed1') AND meta_value LIKE '{$search_word}' AND post_status = 'publish'", "%$search_query%")); ?> <?php//検索コンテンツを表示させるコード?> <?php//ここから記事表示?> <?php if ($results) : ?> <ul> <?php foreach ($results as $result) : ?> <?php $item = get_post($result->post_id); // ※1 set_other_data($item); // ※2 echo '<ul>'; echo "<li>$item->post_title</li>"; echo "<li><img src=\"{$item->thumbnail}\"></li>"; echo '</ul>'; ?> <?php endforeach; ?> </ul> <?php else : ?> <p><?php echo esc_html('検索条件にヒットした募集はありませんでした。'); ?></p> <?php endif; ?>
search.phpに表示したいコンテンツ
$categories = [];// カテゴリーIDをキーにしたカテゴリー配列を生成 foreach (get_categories() as $category) {//配列の要素のある分だけ繰り返し処理を行う $categories[$category->cat_ID] = $category;// カテゴリーidの取得 } function set_other_data($post) { // アイキャッチIDを取得 $post_thumbnail_id = get_post_thumbnail_id($post); // アイキャッチ画像の確認 if ($post_thumbnail_id) { // 存在する $image_src = wp_get_attachment_image_src($post_thumbnail_id); // サムネイルの画像URLを設定 $post->thumbnail = $image_src[0]; } else { // 存在しない $post->thumbnail = 'noimage.jpg'; } // カテゴリーIDを取得 $post->categories = wp_get_post_categories($post->ID); // コメントテキスト if (0 == $post->comment_count) { // コメントなし $post->comments = __('No Comments'); } else { // コメントあり $post->comments = $post->comment_count.'件のコメント'; } // コメントリンク $post->comments_link = get_comments_link($post->ID); }