teratail header banner
teratail header banner
質問するログイン新規登録
WordPress

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

PHP

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

Q&A

解決済

1回答

1493閲覧

WordPressのカスタムフィールドが複数条件で検索できない

himawari39

総合スコア14

WordPress

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

PHP

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

0グッド

0クリップ

投稿2022/04/12 07:08

0

0

いろいろなサイトを参考にしながらWordpressでカスタムフィールドに設定している値が検索に当てはまるときにだけ投稿を表示するようなプログラムを書いています。

具体的には、カスタムフィールドに設定しているWallの値が「Formで取得した最低値」以上、且つ「Formで取得した最高値」以下の場合だけ表示させたいのですが、下記のコードだと条件に当てはまらない投稿まで(投稿ページすべて)表示されてしまいます。

コメントアウトしているWallの値が「Formで取得した最低値」以上のみを表示させることは出来ます。

PHP

1<?php 2/* 3 $args = array( 4 'posts_per_page' => -1 5 'meta_key' => 'Wall', //カスタムフィールドのキー 6 'meta_value' => $_GET["WallMin"], //カスタムフィールドの値 7 'meta_compare' => '>=' //'meta_value'のテスト演算子 8 ); 9*/ 10$args = array( 11 'meta_query' => array( 12 'relation' => 'AND', 13 array( 14 'meta_key' => 'Wall', 15 'meta_value' => $_GET["WallMin"], //カスタムフィールドの値 16 'meta_compare' => '>=', 17 ), 18 array( 19 'meta_key' => 'Wall', 20 'meta_value' => $_GET["WallMax"], //カスタムフィールドの値 21 'meta_compare' => '<=', 22 ), 23 ), 24); 25 26echo "条件は".$_GET["WallMin"]."~".$_GET["WallMax"]; 27$my_query = new WP_Query($args); 28if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 29?> 30<?php the_title(); ?><?php the_post_thumbnail(); ?><?php the_excerpt(); ?> 31<?php endwhile; endif; wp_reset_postdata(); ?>

改善点、チェックする点などご教示お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

公式ドキュメント 関数リファレンス/WP_Query には、

meta_query には次のキーを持った配列をひとつまたは複数入れることができます:

key (文字列) - カスタムフィールドのキー。

value (文字列|配列) - カスタムフィールドの値。配列を指定できるのは compare が 'IN', 'NOT IN', 'BETWEEN' または 'NOT BETWEEN' の場合です。WordPress 3.9 以上で compare に 'EXISTS' または 'NOT EXISTS' を指定する場合は value を省略できます。(参考: bug #23268 の影響で、バージョン 3.9 より前では NOT EXISTS による比較を正しく動作させるために value が必要です。value パラメータに何らかの文字列を与えなければなりません。空文字列や NULL では動作しません。しかし他のどんな文字列でもトリックが効き、NOT EXISTS を使ったときに SQL に現れません。ピンとこなければ 'bug #23268' を見てみては?)。

compare (文字列) - テスト演算子。使える値は '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' および 'NOT EXISTS' です。デフォルトは '=' です。

とあります。

meta_keykeymeta_valuevaluemeta_comparecompare に変えるとどうなるでしょうか。

投稿2022/04/12 12:21

編集2022/04/12 12:23
CHERRY

総合スコア25234

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

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

himawari39

2022/04/12 22:42

ご教示頂きました方法で無事解決できました、ありがとうございました。 返信遅れましてすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問