0

我正在尝试在 WP_query 中组合按关键字和 meta_key 和 meta_value 过滤器进行搜索。关键字搜索和元过滤器独立运作良好,但一起则不行。如何完成?谢谢!

这是我的代码:

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);
4

1 回答 1

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。

一切信息:

在元查询中预获取帖子
自定义字段参数
获取搜索查询

于 2013-01-23T01:10:19.013 回答