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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

304閲覧

WordPressのカスタムフィールドでの4つ以上の条件での検索が正しく行われない

himawari39

総合スコア14

WordPress

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2022/04/13 23:23

WordPressのカスタムフィールドでの4つ以上の条件での検索が正しく行われず困っています。
先日もこちらでアドバイスを頂きまして

PHP

1 array( 2 'key' => 'Wall', 3 'value' => $_GET["WallMin"], 4 'compare' => '>=', 5 ), 6 array( 7 'key' => 'Wall', 8 'value' => $_GET["WallMax"], 9 'compare' => '<=', 10 ),

PHP

1 array( 2 'key' => 'Wall', 3 'value' => $_GET["WallMin"], 4 'compare' => '>=', 5 ), 6 array( 7 'key' => 'Wall', 8 'value' => $_GET["WallMax"], 9 'compare' => '<=', 10 ), 11 12 array( 13 'key' => 'BT', 14 'value' => $_GET["BTMin"], 15 'compare' => '>=', 16 ),

のように3つまでの条件の検索は出来るようになったのですが

PHP

1<?php 2 $args = array( 3 'meta_query' => array( 4 'relation' => 'AND', 5 array( 6 'key' => 'Wall', 7 'value' => $_GET["WallMin"], 8 'compare' => '>=', 9 ), 10 array( 11 'key' => 'Wall', 12 'value' => $_GET["WallMax"], 13 'compare' => '<=', 14 ), 15 16 array( 17 'key' => 'BT', 18 'value' => $_GET["BTMin"], 19 'compare' => '>=', 20 ), 21 array( 22 'key' => 'BT', 23 'value' => $_GET["BTMax"], 24 'compare' => '<=', 25 ), 26 array( 27 'key' => 'KT', 28 'value' => $_GET["KTMin"], 29 'compare' => '>=', 30 ), 31 array( 32 'key' => 'KT', 33 'value' => $_GET["KTMax"], 34 'compare' => '<=', 35 ), 36 37 ), 38); 39 40$my_query = new WP_Query($args); 41if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 42?> 43 44<?php the_title(); ?><?php the_post_thumbnail(); ?><?php the_excerpt(); ?> 45 46<?php endwhile; endif; wp_reset_postdata(); ?>

の様に4つ以上の条件で検索しようとすると条件に合致していても見つかりません。
しかし、なぜか各keyのvalueを実在する投稿のものに近づけると見つかります。
具体的にどれくらい近づけたら見つかるのか試したのですが条件が多すぎてよくわかりませんでした。

他にもvalueの$_GET["〇〇〇"]を変数ではなく数字として指定(実在する投稿のものから30ほど離れたもの)で試してみたのですがそれも条件には合っているものの検索として見つかりませんでした。

困っている点があいまいで申し訳ありませんが改善点、試すべき点、ご教示お願いいたします。

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

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

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

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

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

tabuu

2022/04/14 00:44

単純に条件に一致していないということもあります。 実際にDBに登録されているデータとGET値を提示いただくことは可能でしょうか?
himawari39

2022/04/14 01:25

ありがとうございます、 ある投稿のカスタムフィールドの値ですが Wall:160 BT:79 KT:80です。 $_GET["WallMin"]が100 $_GET["WallMax"]が200 $_GET["BTMin"]が50 $_GET["BTMax"]が100 $_GET["KTMin"]が50 $_GET["KTMax"]が100 です。 先ほど上手く検索ができないとお見せしたphpに echo $_GET["WallMin"]; のような形で全部表示させたので間違いないと思います。
tabuu

2022/04/14 02:25

BTMaxとKTMaxを100ではなく99にするとヒットしますか?
himawari39

2022/04/14 02:42

1つ動かしただけではヒットしませんでした
himawari39

2022/04/14 02:47

アドバイスありがとうございました、無事解決しました。
guest

回答1

0

ベストアンサー

文字として比較しているので"100"は"80"より小さいです。
こんな感じで数値として比較する場合はtypeを追加してください。

PHP

1array( 2 'key' => 'Wall', 3 'value' => $_GET["WallMin"], 4 'compare' => '>=', 5 'type' => 'NUMERIC', 6), 7

投稿2022/04/14 02:35

tabuu

総合スコア2449

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

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

himawari39

2022/04/14 02:47

ありがとうございました、無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問