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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

8034閲覧

チェックボックスのカスタムフィールドを絞込み検索したいです。

cues

総合スコア23

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/05/02 08:26

お世話になります。

チェックボックス絞込みをしたいと思っておりますが、
該当なしとしか表示されず困っております。
キーワード検索は動作しています。

参考記事:https://teratail.com/questions/73215

php

1var_dump($metaquerysp); var_dump($s);

を試したことろ、
array(1) { [0]=> array(2) { ["key"]=> string(8) "kodawari" ["value"]=> string(21) "バス・トイレ別" } } string(0) ""
と表示されました

カスタムフィールドは、「Advanced Custom Fields」というプラグインを使用しています。


searchform.php

php

1<form method="get" id="searchform" action="<?php bloginfo('url'); ?>"> 2 <label for="s" class="assistive-text">検索</label> 3 <input type="text" name="s" id="s" placeholder="検索" /> 4 5 <div>カスタムフィールド</div> 6 <label><input type="checkbox" name="kodawari[]" value="駐車場あり">駐車場あり</label><br> 7 <label><input type="checkbox" name="kodawari[]" value="バス・トイレ別">バス・トイレ別</label><br> 8 <label><input type="checkbox" name="kodawari[]" value="ペット相談">ペット相談</label><br> 9 <label><input type="checkbox" name="kodawari[]" value="2階以上住戸">2階以上住戸</label> 10 <input type="submit" value="検索" /> 11</form>

search.php

php

1<?php 2$s = $_GET['s']; 3$kodawari = $_GET['kodawari']; 4 5//meta_query用 6if($kodawari){ 7 foreach($kodawari as $val){ 8 $metaquerysp[] = array( 9 'key'=>'kodawari', 10 'value'=> $val, 11 ); 12 } 13} 14if( 1<count($metaquerysp) ) { 15 $metaquerysp['relation'] = 'OR'; 16} 17?> 18 19<div>検索条件</div> 20<?php if($s){ ?>検索キーワード:<?php echo $s; ?><br><?php } ?> 21<?php if (is_array($kodawari)) { ?>カスタムフィールド:<?php 22if (is_array($kodawari)) { 23foreach($kodawari as $val){ 24if ($val === end($kodawari)) { 25echo $val; 26 }else{ 27echo $val.", "; 28} 29} 30} 31} 32 33 ?> 34 35<div>検索結果</div> 36 37<?php 38query_posts( array( 39 'meta_query' => $metaquerysp, 40 's' => $s, 41 ) 42); 43 44?> 45 46<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 47 48<div><?php the_title(); ?></div> 49<div><?php the_content(); ?></div> 50 51<?php endwhile; else : ?> 52 53<div>該当なし</div> 54 55<?php endif; 56wp_reset_query(); ?>

おかしな点がございましたら、アドバイスいただけませんでしょうか。
宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

書かれているコードは、
参考にされた記事 wordpressプラグインを使わずにカスタムフィールドで絞り込み検索 と、
その記事で参考にされている記事 絞り込み検索をプラグインを使わずに実装[WordPress]
のままだと思うのですが、

ちょっと気になったのは、

カスタムフィールドのスラッグは、これらの記事と同じ「kodawari」ですか。

searchform.phpのほうは「kodawari[]」でもいいと思うのですが、
search.phpのほうの「key」は「絞り込みたいカスタムフィールドのスラッグ」でないとだめな気がします。

(同じような「カスタムフィールドで絞り込み検索」の質問ではkotoriさんのサイトを参考にされているかたが多いようで、その辺のことは書かれていない(サイトにも、質問にも)ので私自身疑問に思っているので回答してみました)

投稿2017/05/03 03:06

8-0_nyan5

総合スコア2352

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

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

cues

2017/05/08 01:22

ご連絡大変遅くなり、申し訳ございません。 また、ご回答いただきありがとうございます^^ 「絞り込みたいカスタムフィールドのスラッグ」というのは、 「フィールド名」のことでしょうか? カスタムフィールドは、「Advanced Custom Fields」というプラグインを使っているのですが 「フィールド名」は同じく「kodawari」にしています。 宜しくお願い致します。
8-0_nyan5

2017/05/08 13:03

>「フィールド名」は同じく「kodawari」 そうですか、なら考えたものと違いますね。 それでは、この検索では「カスタムフィールド、キーワード」「カスタムフィールドだけ」「キーワードだけ」の三種類があると思いますが、いまできているのは「キーワード」検索だけですか。
cues

2017/05/09 00:57

ご回答ありがとうございます^^ 今できているのは「キーワード」検索だけです。 「キーワード」検索だけだと検索結果が表示されますが、 「カスタムフィールド、キーワード」にすると「キーワード」検索の結果も反映されず 該当なしになってしまいます。 宜しくお願い致します。
guest

0

https://watanabemitsutoshi.com/advanced-custom-fields-meta

Advanced Custom Fieldsのチェックボックスは検索に向いてないそうなので、
違う方法で試してみます。

ありがとうございました。

投稿2017/05/14 03:47

cues

総合スコア23

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

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

0

こんな感じでしょうか?

PHP

1<form method="get"> 2 <label for="s" class="assistive-text">検索</label> 3 <input type="text" name="s" id="s" placeholder="検索" /> 4 <div>カスタムフィールド</div> 5 <label><input type="checkbox" name="kodawari[]" value="駐車場あり">駐車場あり</label><br> 6 <label><input type="checkbox" name="kodawari[]" value="バス・トイレ別">バス・トイレ別</label><br> 7 <label><input type="checkbox" name="kodawari[]" value="ペット相談">ペット相談</label><br> 8 <label><input type="checkbox" name="kodawari[]" value="2階以上住戸">2階以上住戸</label> 9 <input type="submit" value="検索" /> 10</form> 11 12<?PHP 13$kodawari=filter_input(INPUT_GET,"kodawari",FILTER_DEFAULT,["flags"=>FILTER_REQUIRE_ARRAY]); 14$metaquerysp=[]; 15if(is_array($kodawari)){ 16 array_walk($kodawari,function($x) use(&$metaquerysp){ 17 $metaquerysp[]=[ 18 'key'=>'kodawari', 19 'value'=> $x, 20 ]; 21 }); 22 if( 1<count($metaquerysp) ) { 23 $metaquerysp['relation'] = 'OR'; 24 } 25 print_r($metaquerysp); 26} 27?>

投稿2017/05/02 08:52

yambejp

総合スコア114833

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

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

cues

2017/05/02 09:17

教えていただきありがとうございます^^ searchform.php にお教えいただいたコードを入れてみたのですが 変わらずでした。 下半分は、search.php に挿入するものでしょうか。 お手数おかけいたします、宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問