我正在尝试使用WP_Query
如下所示:
$searchTerm = \'%my book%\';
$args = array(
\'post_type\' => \'books\',
\'meta_query\' = array(
\'relation\' => \'OR\',
array(
\'key\' => \'book_title\',
\'value\' => $searchTerm,
\'compare\' => \'LIKE\'
),
array(
\'key\' => \'book_description\',
\'value\' => $searchTerm,
\'compare\' => \'LIKE\'
)
);
);
$query = new WP_Query($args);
上面的查询工作正常。事实上我可以改变
compare
任何mysql支持的运算符的运算符,如:
=,
\\>=,
<=,
\\>,
<,
LIKE,
RLIKE,
BETWEEN
但是,我不知道如何使用运算符
MATCH AGAINST
. 在MySQL中,它的工作原理如下:
select *
from wp_postmeta
where meta_key = \'book_title\'
and match(meta_value) against (\'my book\');
但我想不出一个方法
WP_Query
, 提前谢谢。
SO网友:Johansson
据我所知,你不能使用MATCH()... AGAINST
在里面WP_Query
. 比较的可能值如下:
=
!=
>
>=
<
<=
LIKE
NOT LIKE
IN
NOT IN
BETWEEN
NOT BETWEEN
NOT EXISTS
REGEXP
NOT REGEXP
RLIKE
默认值为
=
. 但是,您可以使用
MATCH() AGAINST
在要使用的常规查询中
$wpdb
. 例如:
$wpdb->prepare(" AND MATCH($wpdb->posts.post_title, $wpdb->posts.post_content) AGAINST(%s)", $search );
还有一些
__not_in
可以在查询中使用的参数,例如:
$query = new WP_Query( array( \'tag__not_in\' => array( 1, 2, 3 ) ) );
它将搜索标签ID为1、2和3的帖子。
这Codex Page 和Core ticket 也许能帮助你。