[WordPress] ワードプレス: クエリ post_title OR meta_query

スポンサーリンク

Question

私のワードプレスのカスタム クエリの問題のための解決策を探しています

ユーザーがいくつかのテキストを入力できる検索フォームがあるこのテキストは、

post_title

や、

meta_value (Company ID)

から単語をすることができます

ので、私は

post_title

で文字列を検索する必要があったり、

meta_key-Field

「id 番号」、しかし私はまたいくつかの他の追加の検索 params

これらの

WP_Query

の私の引数は:

Array(
    [post_type] => company
    [pagination] => 1
    [posts_per_page] => 10
    [paged] => 1
    [meta_query] => Array
        (
            [relation] => AND
            [0] => Array
                (
                    [0] => Array
                        (
                            [key] => id-number
                            [value] => FOOBAR
                        )

                    [1] => Array
                        (
                            [key] => post_title
                            [value] => FOOBAR
                            [compare] => LIKE
                        )

                    [relation] => OR
                )

            [1] => Array
                (
                    [relation] => AND
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [key] => country
                                    [value] => USA
                                )
                            [relation] => OR
                        )
                )
        )
)

Array[meta_query][0][1] (post_title)

は単なるプレース ホルダー – 私は知っていることはできません動作が、

(id-number OR post_title)

を検索する方法と

(all other vars...)

答え

WP_Query でこれをやっている直接ことはできません。(1000年行の長さ) の上に巨大な

WP_Query::get_posts

メソッドの引数から、クエリが構築されます (wp-含まれています/query.php を参照してください) 大抵長い一連のとして

$where

変数に

AND

ステートメントの連結です 。1

今、その変数 (クエリの SQL を保持する) を構築する方法をカスタマイズするためのフィルターの数にフックすることができます。あなたのケースでは、次のいずれか適切かもしれません:

  • posts_search: 検索クエリがどのように変更することができます解釈 (ワードプレス内蔵/標準検索フォームから来る)。Where クエリ検索クエリから必要に応じて手動で構築すると思います
  • posts_where: 全体 where クエリ–すべてのクエリに対しても変更できます

を使用してフィルターは本当に WP_Query へ引数を送信してオーバーライドが SQL クエリの構築方法しますが、「通常の方法」で作成します。あなたはちょうど完全 SQL クエリを実行する方が良いかもしれません。コーデックスの記事これを行う方法を詳細に示す カスタム選択クエリを使用して表示する投稿 があります



1。WP_Query すべてではない完全な ORM が専用のクラス取るクエリ文字列変数とフィルタ リングの記事に基づいてそれらの規則.

http://stackoverflow.com/questions/27770634/wordpress-query-post-title-or-meta-query

スポンサーリンク

Leave a Reply