質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

1238閲覧

WordPressのサイト内検索でカスタムフィールドを含める方法

kinakomochi

総合スコア24

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/09/04 00:54

編集2018/09/04 00:56

WordPressでACFで作成したテキストエリアも検索対象にする方法が分からず困っております。
検索の内容としては、セレクトボックスで選択できるカテゴリーとフリーワード検索になります。
下記サイトを参考にセレクトボックスで選択したカテゴリーは、検索することができたのですが、
フリーワード検索がうまく動作しない状況です。

カテゴリー検索参考サイト

いろいろ調べてプラグイン「Search Everything」を導入したらACFの内容も検索できるようになると知ったので、
導入してみた所、フリーワード検索はうまくいったのですが、今度はカテゴリー検索が動作しなくなってしまいました。
申し訳ないのですが、お力添えしていただけますでしょうか。

■serch.php

<?php get_header(); ?> <?php $s = $_GET['s']; $item_tag = $_GET['item']; $genre_tag = $_GET['genre']; $type_tag = $_GET['type']; $type2_tag = $_GET['type2']; if($item_tag){ $item_tag = array_values(array_filter($item_tag, "strlen")); $taxquerysp[] = array( 'post_type' => 'member', 'taxonomy'=>'ctcategory', 'terms'=> $item_tag, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); $item_name = get_term_by( 'slug', $item_tag[0], 'ctcategory' ); } if($genre_tag){ $genre_tag = array_values(array_filter($genre_tag, "strlen")); $taxquerysp[] = array( 'post_type' => 'member', 'taxonomy'=>'ctcategory', 'terms'=> $genre_tag, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); $genre_name = get_term_by( 'slug', $genre_tag[0], 'ctcategory' ); } if($type_tag){ $type_tag = array_values(array_filter($type_tag, "strlen")); $taxquerysp[] = array( 'post_type' => 'member', 'taxonomy'=>'ctcategory', 'terms'=> $type_tag, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); $type_name = get_term_by( 'slug', $type_tag[0], 'ctcategory' ); } if($type2_tag){ $type2_tag = array_values(array_filter($type2_tag, "strlen")); $taxquerysp[] = array( 'post_type' => 'member', 'taxonomy'=>'ctcategory', 'terms'=> $type2_tag, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); $type2_name = get_term_by( 'slug', $type2_tag[0], 'ctcategory' ); } $args = array( 'tax_query' => $taxquerysp, 's' => $s, 'posts_per_page' => -1, ); $the_query = new WP_Query( $args ); ?> <div class="mainImg"> <h1 class="pageTitle"> 検索結果 </h1> </div> <section id="section1"> <div id="container"> <div class="clear contentArea"> <div id="main"> <?php $count = $the_query->post_count; if($count!=0){ ?> <p class="searchCount"> 検索結果 <?php echo $count ?>件 <span class="search_keyword">キーワード: <?php if($item_tag): ?> 「<?php echo $item_name->name; ?>」 <?php endif; ?> <?php if($genre_tag): ?> 「<?php echo $genre_name->name; ?>」 <?php endif; ?> <?php if($type_tag): ?> 「<?php echo $type_name->name; ?>」 <?php endif; ?> <?php if($type2_tag): ?> 「<?php echo $type2_name->name; ?>」 <?php endif; ?> <?php if($s): ?> 「<?php echo $s ?>」 <?php endif; ?> </span> </p> <?php } ?> <div class="search_area"> <?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <article class="contentList"> <div class="clear"> <div class="leftImg serachImg"> <?php // カスタムフィールド取得 $c_img1 = get_field("cf2_img"); remove_filter ('acf_the_content', 'wpautop'); $c_txt = mb_substr(get_field("cf1_txt", $post_id, false),0,150,'utf-8'); ?> <a href="<?php the_permalink(); ?>?search=s"> <?php if ( $c_img1 ): ?> <img src="<?php echo $c_img1 ?>" alt="<?php the_title() ?>"> <?php else: ?> <img src="<?php echo esc_url(get_template_directory_uri()); ?>/assets/images/common/no-image.png" alt=""> <?php endif; ?> </a> </div> <div class="rightContent serachText"> <h2><a href="<?php the_permalink(); ?>?search=s"><?php the_title() ?></a></h2> <p class="author_creating"> <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author_nickname(); ?></a> </p> <p> <?php echo $c_txt.'...' ?> </p> <p class="search_cate"> <?php $postid = get_the_ID(); $member_terms = wp_get_object_terms($postid,'ctcategory'); ?> <?php if (!empty($member_terms) && !is_wp_error($member_terms)) { usort($member_terms,"cmp_parent"); foreach ($member_terms as $member_term) { $term_link = get_term_link( $member_term ); echo '<span class="tag"><a href="'.$term_link.'">'.esc_html($member_term->name).'</a></span>'; } } ?> </p> <p class="more"> <a href="<?php the_permalink(); ?>?search=s" class="more_btn">詳しくはこちら</a> </p> </div> </div> </article> <?php endwhile; else : ?> <div class="notContent">関連するサービスは見つかりませんでした。</div> <?php endif; wp_reset_postdata(); ?> </div><!-- .search_area --> </div><!-- #main --> <?php get_sidebar(); ?> </div> </div><!-- #container --> </section> <?php get_footer(); ?>

■functions.php

/*-------------------------------------------*/ /*検索用処理 /*-------------------------------------------*/ function search_no_keywords() { if (isset($_GET['s']) && empty($_GET['s'])) { //URLにパラメータ「s」がついていたらsearch.phpを表示 include(TEMPLATEPATH . '/search.php'); exit; } } add_action('template_redirect', 'search_no_keywords'); //検索の際、カスタム投稿「member」のみを対象にする function SearchFilter($query) { if ($query->is_search) { $query->set('post_type', 'member'); } return $query; } add_filter('pre_get_posts','SearchFilter');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問