use*_*008 5 php wordpress meta-key
我正在寻找 WordPress 自定义查询问题的解决方案。我有一个搜索表单,用户可以在其中输入一些文本,该文本可以是 或 中的post_title单词meta_value (Company ID)。
post_title我需要在“或”“id-number”中搜索字符串meta_key-Field,但我还有一些其他附加搜索参数。这些是我的参数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
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
Array[meta_query][0][1] (post_title)只是一个占位符 - 我知道这行不通,但我如何搜索
(id-number OR post_title)AND(all other vars...)
使用 WP_Query 无法直接完成此操作。该查询是根据可怕的(超过 1000 行长)WP_Query::get_posts方法(请参阅 wp-includes/query.php)中的参数构造的,主要是一系列AND到变量的语句串联$where。1
现在,您可以连接多个过滤器来自定义该变量(保存查询的 SQL)的构造方式。对于您的情况,以下之一可能是合适的:
使用过滤器,您实际上不会将参数发送到 WP_Query 并以“正常方式”构造它,而是覆盖 SQL WHERE 查询的构造方式。您最好完全运行自己的 SQL 查询。该法典有一篇文章使用自定义选择查询显示帖子,详细介绍了如何完成此操作。
1. WP_Query 根本不是一个完整的 ORM,而是一个专门的类,用于获取查询字符串变量并根据这些规则过滤帖子。