Wordpress:如何在WP_query中组合关键字搜索和元过滤器

时间:2013-01-22 21:29:43

标签: wordpress

我正在尝试将搜索关键字和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);

1 个答案:

答案 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