已解决:请参阅下面的答案。
我有自定义帖子类型,BOOKS。它有几个自定义字段,即; TITLE,AUTHOR,GENRE,RATING。如何修复下面的meta_query代码,以便只在自定义字段中包含搜索词的书籍;标题,作者,流派;确切地说,我的搜索表单中指定的评级会显示在结果中吗?
我已经制作了自定义搜索表单;将搜索标题,作者和流派的文本区域;以及将搜索评级的下拉列表。我在下面做的meta_query只搜索标题,作者和流派。但我现在很难知道如何添加评级代码。
这是我用meta_query关系在视觉上想象它的方式: (标题或作者或流派)和评级
$args = array(
'relation' => 'OR',
array(
'key' => 'title',
'value' => $searchvalue,
'compare' => 'LIKE'
);
array(
'key' => 'author',
'value' => $searchvalue,
'compare' => 'LIKE'
);
array(
'key' => 'genre',
'value' => $searchvalue,
'compare' => 'LIKE'
);
),
array(
'relation' => 'AND',
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
));
我非常感谢你的帮助和建议。
答案 0 :(得分:43)
我在一些帮助下找到了解决方案。 下面的代码完美无缺。
$args => array(
'relation' => 'AND',
array(
'relation' => 'OR',
array(
'key' => 'title',
'value' => $searchvalue,
'compare' => 'LIKE'
),
array(
'key' => 'author',
'value' => $searchvalue,
'compare' => 'LIKE'
),
array(
'key' => 'genre',
'value' => $searchvalue,
'compare' => 'LIKE'
)
),
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
)
)
);
答案 1 :(得分:1)
经过一番试验和错误后,我找到了解决方法。这是合乎逻辑的我的意思是meta_query不支持字段“key”的数组,但是在“key”中给出数组,我得到了完美的解决方案。我可能听起来很疯狂,但它的工作就像魅力一样。
$args => array(
'relation' => 'AND',
array(
'key' => array('title','author','genre',),
'value' => $searchvalue,
'compare' => '='
),
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
)
)
您只会收到“trim()”的警告,因为我们传递的是数组而不是字符串。抑制该警告或如果您找到更好的解决方案,请添加一些内容。