我有与自定义帖子类型关联的分类颜色。我在一个表中列出了所有post meta和分类法。我在表中有一个选项,可以搜索与搜索值匹配的帖子。
当输入search键时,它将执行ajax调用以获取帖子。
这是获取与搜索字符串匹配的所有帖子的查询。
function get_query_posts_custom($post_id,$start,$length) {
//get_posts arguments
$args = array(
\'post_type\' => \'custom_post\',
\'post_status\' => array(\'publish\'),
\'numberposts\' => $length,
\'offset\' => $start,
\'orderby\' => \'menu_order\',
\'order\' => \'asc\',
\'post_parent\' => $_product->id
);
//get custom post taxonomy
$taxonomies = (array) maybe_unserialize(get_post_meta( $post_id, \'post_taxonomy\', true));
if(empty($attributes)) {
$taxonomies = array();
}
$meta_keys = array(\'type\',\'code\',\'key\');
if(!empty($search)) {
foreach($meta_keys as $meta_key) {
$meta_query[] = array(
\'key\' => $meta_key,
\'value\' => $search,
\'compare\' => \'LIKE\';
);
}
$args[\'meta_query\'] = $meta_query;
$tax_query = array();
foreach($taxonomies as $taxonomy) {
$tax_query = array(
\'taxonomy\' => $taxonomy;
\'field\' => \'slug\';
\'terms\' => $search;
\'operator\' => \'LIKE\';
);
}
if(count($tax_query)) {
$args[\'tax_query\'] = $tax_query;
}
}
$results = get_posts($args);
return $results;
}
如何获取与分类法的搜索字符串匹配的帖子?
我搜索了wordpress函数引用,它说只有允许tax\\u查询的运算符是“IN、NOT IN或and”),我可以使用LIKE运算符吗?
SO网友:Arvid
如其他答案所述,你不能简单地LIKE
-使用wise搜索tax_query
.
您可以做的是改变SQL
声明使用了@Eric Holmes建议的过滤器,这是一种先进的技术。你需要知道你在做什么。或者,您可以先进行单独的查询,加载分类术语(使用LIKE
) 然后加载实际的帖子。
下面是一个简单的示例,用于加载与匹配LIKE
与$search
变量
// load the terms using LIKE
$termIds = get_terms([
\'name__like\' => $search,
\'fields\' => \'ids\'
]);
// load the posts using the found term IDs
$posts = get_posts([
\'tax_query\' => [
\'relation\' => \'OR\',
[
\'taxonomy\' => \'yourtaxonomy\',
\'field\' => \'id\',
\'terms\' => $termIds,
],
[
\'taxonomy\' => \'othertaxonomy\',
\'field\' => \'id\',
\'terms\' => $termIds,
],
],
]);