Wordpress WP使用pre_get_posts过滤器将搜索扩展到post meta

Wordpress WP使用pre_get_posts过滤器将搜索扩展到post meta,wordpress,meta,Wordpress,Meta,我正在尝试将wp搜索扩展到Posteta。这是我的片段: function filtroRicerca($query) { if ($query->is_search): $post_type = $query->get('post_type'); $post_type[] = 'ordine'; $query->set('post_type', $post_type ); $meta_query =

我正在尝试将wp搜索扩展到Posteta。这是我的片段:

function filtroRicerca($query) {

    if ($query->is_search):

        $post_type = $query->get('post_type');
        $post_type[] = 'ordine';
        $query->set('post_type', $post_type );

        $meta_query = $query->get('meta_query');
        $meta_query['relation'] = 'OR';
        $meta_query[] = array(
                'key' => 'ritiro_indirizzo',
                'value' =>  $query->query_vars['s'],
                'compare' => 'LIKE'
        );
        $query->set( 'meta_query', $meta_query );

    endif;

    return $query;
};

add_filter('pre_get_posts','filtroRicerca');

这应该很容易,但我看不出哪里错了!如果我搜索字符串,获取的结果只匹配文章标题、内容等。如果我只在我的元字段中查找某个内容,则不会返回任何行。我做错了什么?

有一个WP bug,您需要将$meta_query[]=封装在另一个数组中,如:

 $meta_query[] = array(
 array(
            'key' => 'ritiro_indirizzo',
            'value' =>  $query->query_vars['s'],
            'compare' => 'LIKE'
    )
 );

另外,您不需要返回$query对象。

ok第一点:wp在wp_posts中进行标准搜索,加上设置的所有/某些元。如果我仅通过元字符串进行搜索,则第一个条件失败。我需要让wp至少匹配其中一个字段…