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

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

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

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

Q&A

解決済

1回答

5510閲覧

WordPress:get_postsで複数の値を部分一致で絞り込みたい

igaiga

総合スコア144

WordPress

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

0グッド

0クリップ

投稿2017/03/01 07:27

編集2017/03/01 23:55

###前提・実現したいこと
key_nameに「新宿ハイツ2号棟」と入っているカスタムフィールドがある場合に、$building_arrayに入っている「新宿ハイツ」で絞りこめるようにしたく思います。

'compare'=>'IN'をLIKEに変更して、valueを「新宿ハイツ」だけにすれば絞りこめるのですが、配列で部分一致にしたいです。

そもそも'compare'=>'IN'が配列のいずれかが完全一致を探すものなんだとは思いますが、何かしらの方法で実現できればと思います。
お知恵を拝借できれば幸いです。

###ソースコード

$building_array = array('新宿ハイツ','渋谷ビル','恵比寿ビルディング'); $metaqueryrent[] = array( 'meta_query' => array( array( 'key'=>'key_name', 'value'=> $building_array, 'compare'=>'IN' ) ) ); $myposts = get_posts( array( 'post_type' => "rent", 'meta_query' => $metaqueryrent, 'numberposts' => -1, ));

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じでどうですか?

PHP

1$building_array = array('新宿ハイツ','渋谷ビル','恵比寿ビルディング'); 2 3$args = array( 4 'post_type' => 'rent', 5 'meta_query' => array( 6 'relation' => 'OR', 7 array( 8 'key' => 'key_name', 9 'value' => $building_array[0], 10 'compare' => 'LIKE', 11 ), 12 array( 13 'key' => 'key_name', 14 'value' => $building_array[1], 15 'compare' => 'LIKE', 16 ), 17 array( 18 'key' => 'key_name', 19 'value' => $building_array[2], 20 'compare' => 'LIKE', 21 ), 22 ), 23 'numberposts' => -1, 24); 25 26 27$myposts = get_posts( $args );

参考URL
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.AB.E3.82.B9.E3.82.BF.E3.83.A0.E3.83.95.E3.82.A3.E3.83.BC.E3.83.AB.E3.83.89.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

投稿2017/03/01 11:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

igaiga

2017/03/02 00:06

ありがとうございます!完璧です!
igaiga

2017/03/02 00:18

あ、'relation' => 'OR',だから他にカスタムフィールドの条件足すとダメですね。。。
退会済みユーザー

退会済みユーザー

2017/03/02 00:30

meta_queryはさらに入れ子にすることができるので、他のカスタムフィールドの条件も加えられると思いますよ。 つまり、 ((ビル1 OR ビル2 OR ビル3)AND(カスタム1 OR カスタム2 OR カスタム3)) みたいな条件に組むことができます。
igaiga

2017/03/02 00:42

ありがとうございます。一応参考サイトも見つけたのでメモhttps://ja.wordpress.org/support/topic/meta_query%E3%81%A7and%E6%9D%A1%E4%BB%B6%E3%81%A8or%E6%9D%A1%E4%BB%B6%E3%82%92%E4%BD%BF%E3%81%84%E3%81%9F%E3%81%84/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問