カスタムフィールドで検索すると同じ記事が複数表示されるうえに、絞り込みがなされない、、、
-
Wordpressのバージョン
5.1.1
テーマ:Onepress
プラグイン:simplemembership
:easydigitaldownload
:エレメンター
などいつも大変お世話になっております。
複数条件で記事の絞り込み検索を行うために、
function.phpに追記を行い、検索フォームのショートコードを作成して、
サイドバーに表記しました。
デフォルトのsearch.phpではサムネイルが表示されないなどの問題があったため、
デフォルトのindex.phpをsearch.phpにコピペしました。その状態でカスタムフィールドを対象とした(プルダウンでの価格による絞り込み)検索を行うと、同じ記事が複数検索されるうえに、カスタムフィールドで値を入力していない記事も検索結果に表示されます。
プログラミング言語の知識がほとんどなく、いろんな方のサイトを参考にしたり、フォーラムでご意見を伺ったりして助けていただきながら、ここまで作成しましたが、行き詰ってしまいました。
いろいろ試した挙句、ほとんどがコピペになってしまい、原因がよくわかりません。いつも身勝手なお助け依頼で申し訳ございません。
回答をしていただいてもすぐに返信できずに申し訳ございません。そんな私ですが、非常に困っておりまして、助けていただけると幸いです。
参考に子テーマのfunctions.phpとsearch.phpと検索フォームのcustom-search.phpを
記載します。
よろしくお願いいたします。
function.php
↓
<?php
/**
* OnePress Child Theme Functions
*
*//**
* Enqueue child theme style
*/
add_action( ‘wp_enqueue_scripts’, ‘onepress_child_enqueue_styles’, 15 );
function onepress_child_enqueue_styles() {
wp_enqueue_style( ‘onepress-child-style’, get_stylesheet_directory_uri() . ‘/style.css’ );
}
/**
* Hook to add custom section after about section
*
* @see wp-content/themes/onepress/template-frontpage.php
*//*
function add_my_custom_section(){
?>
<section id=”my_section” class=”my_section section-padding onepage-section”>
<div class=”container”>
<div class=”section-title-area”>
<h5 class=”section-subtitle”> My section subtitle</h5>
<h2 class=”section-title”> My section title</h2>
</div>
<div class=”row”>
<!– Your section content here, you can use bootstrap 4 elements 🙂 –>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.</p></div>
</div>
</section>
<?php
}
add_action( ‘onepress_after_section_about’, ‘add_my_custom_section’ );
*///ショートコードを作成・
function my_php_Include($params = array()) {
extract(shortcode_atts(array(‘file’ => ‘default’), $params));
ob_start();
include(STYLESHEETPATH . “/$file.php”);
return ob_get_clean();
}
add_shortcode(‘myphp’, ‘my_php_Include’);//ログアウト先を決める・
function redirect_logout_page(){
$url = site_url(‘https://www.structurebank.jp/logout/’, ‘http’);
wp_safe_redirect($url);
exit();
}
add_action(‘wp_logout’,’redirect_logout_page’);//
/*
function custom_search($search, $wp_query) {
//サーチページ以外だったら終了
if (!$wp_query->is_search) return;
//投稿記事のみ検索
$search .= ” AND post_type = ‘post'”;
return $search;
//query[‘s’]があったら検索ページ表示
if ( isset($wp_query->query[‘s’]) ) $wp_query->is_search = true;
/* //カスタムフィールドで検索
if (!empty($_REQUEST[‘meta_text’])) {
$meta_text = “‘%” .mysql_real_escape_string($_REQUEST[‘meta_text’]). “%'”;
$search .= ”
AND wp_postmeta.meta_key = ‘custom1’
AND wp_postmeta.meta_value LIKE {$meta_text}”;
}
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);
*/function custom_search($search, $wp_query) {
//検索テキストが空でも検索ページを表示
if ( isset($wp_query->query[‘s’]) ) $wp_query->is_search = true;
//検索ページ以外だっ修了終了
if (!$wp_query->is_search) return;
//投稿記事のみ検索
$search .= ” AND post_type = ‘post'”;
return $search;
//カスタムフィールド(価格)で検索
if (!empty($_REQUEST[‘price’])) {
$meta_price = intval($_REQUEST[‘price’]);
$mate_pricelow = $meta_price – 10000;
$search .= ”
AND wp_postmeta.meta_key = ‘price’
AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
“;
}
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);function custom_search_join($join){
if(!empty($_REQUEST[‘meta_text’]) || !empty($_REQUEST[‘price’])) {
$join .= “INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)”;
}
return $join;
}
add_filter( ‘posts_join’, ‘custom_search_join’ );search.php
↓
<?phpget_header();
$layout = onepress_get_layout();
?>
<?php onepress_breadcrumb(); ?>
<div id=”content” class=”site-content”>
<div id=”content-inside” class=”container <?php echo esc_attr( $layout ); ?>”>
<div id=”primary” class=”content-area”>
<main id=”main” class=”site-main” role=”main”><?php if ( have_posts() ) : ?>
<?php if ( is_home() && ! is_front_page() ) : ?>
<header>
<h1 class=”page-title screen-reader-text”><?php single_post_title(); ?></h1>
</header>
<?php endif; ?><?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?><?php
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( ‘template-parts/content’, get_post_format() );
?><?php endwhile; ?>
<?php the_posts_navigation(); ?>
<?php else : ?>
<?php get_template_part( ‘template-parts/content’, ‘none’ ); ?>
<?php endif; ?>
</main><!– #main –>
</div><!– #primary –>
<?php if ( $layout != ‘no-sidebar’ ) { ?>
<?php get_sidebar(); ?>
<?php } ?></div><!–#content-inside –>
</div><!– #content –><?php get_footer(); ?>
custom-search.php
↓
<div class=”conditionsearch”>
<h2 class=”side-cat-title”>商品検索</h2>
<form method=”get” action=”<?php bloginfo( ‘url’ ); ?>” class=”form-horizontal”>
<div class=”form-group”>
<label class=”col-sm-4 control-label”>キーワード</label>
<div class=”col-sm-8″>
<input class=”form-control” name=”s” id=”s” type=”text” placeholder=”キーワードを入力”/>
</div>
</div>
<div class=”form-group”>
<label class=”col-sm-4 control-label”>価格</label>
<div class=”col-sm-8″>
<select class=”form-control” name=”price”>
<option value=””>選択してください。</option>
<option value=”10000″>~10,000円</option>
<option value=”20000″>10,000~20,000円</option>
<option value=”30000″>20,000~30,000円</option>
<option value=”40000″>30,000~40,000円</option>
<option value=”50000″>40,000~50,000円</option>
<option value=”60000″>50,000~60,000円</option>
<option value=”70000″>60,000~70,000円</option>
<option value=”80000″>70,000~80,000円</option>
<option value=”90000″>80,000~90,000円</option>
<option value=”100000″>90,000~</option>
</select>
</div>
</div>
<div class=”form-group”>
<label class=”col-sm-4 control-label”>カテゴリー</label>
<div class=”col-sm-8″>
<?php wp_dropdown_categories(‘depth=0&orderby=name&hide_empty=1&show_option_all=カテゴリーを選択&exclude=1,2,3’); ?>
</div>
</div>
<div class=”form-group”>
<div class=”col-sm-offset-4 col-sm-8″>
<button id=”submit” type=”submit” class=”btn btn-default”>検索</button>
</div>
</div>
</form>
</div>ヘルプの必要なページ: [リンクを見るにはログイン]
- トピック「カスタムフィールドで検索すると同じ記事が複数表示されるうえに、絞り込みがなされない、、、」には新たに返信することはできません。