我正在为我的Wordpress自定义查询问题寻找解决方案。
我有一个搜索表单,用户可以在其中输入一些文字,此文字可以是post_title
或meta_value (Company ID)
中的单词。
所以,我需要在post_title
或meta_key-Field
“id-number”中搜索字符串,
但我还有一些其他的搜索参数。
这些是我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...)
答案 0 :(得分:0)
直接使用WP_Query执行此操作。查询是根据monstrous(超过1000行)WP_Query::get_posts
方法中的参数构建的(参见wp-includes / query.php),主要是AND
语句到{{$where
语句的一系列连接。 1}}变量。 1
现在,您可以挂钩到许多过滤器来自定义如何构造该变量(保存查询的SQL)。在您的情况下,以下之一可能是合适的:
使用过滤器,你不是真的向WP_Query发送参数并以“正常方式”构造它,而是覆盖SQL WHERE查询的构造方式。完全运行自己的SQL查询可能会更好。该手抄本有一篇文章 Displaying Posts using a Custom Select Query ,详细说明了如何做到这一点。
1。 WP_Query根本不是一个完整的ORM,而是一个专门的类,用于根据这些规则获取查询字符串变量和过滤帖子。