我正在尝试将搜索关键字和meta_key以及meta_value过滤器结合在WP_query中。关键字搜索和元过滤器可以独立工作,但不是一起使用。如何完成它?谢谢!
这是我的代码:
if ( isset($_REQUEST['search']) AND $_REQUEST['search'] )
{
$query_param = array( 's' => urldecode($_REQUEST['search']), 'post_type' => GOODS_POST_TYPE );
$query_param['meta_key'] = 'sku';
$query_param['meta_value'] = urldecode($_REQUEST['search']);
}
$query = new WP_Query($query_param);
答案 0 :(得分:1)
在运行搜索之前修改您的查询,并使用Wordpress'内置函数来执行您需要的操作而不是依赖未经过滤的数据:
<?php
add_action('pre_get_posts', 'modify_goods_search');
function modify_goods_search($query)
{
if($query->is_search)
{
$query->set('meta_key', 'sku');
$query->set('meta_value', get_search_query());
$query->set('post_type', GOODS_POST_TYPE);
}
}
?>
请记住,这将修改所有搜索。如果您只想修改一个特定搜索,则可以修改条件以确保在修改给定查询之前查看特定页面。
您可能还想考虑使用meta_query而不仅仅是meta_key和meta_value。
有关一切的信息:
Pre Get Posts
Custom Field Parameters in Meta Query
Get Search Query