在woocommerce搜索中包含自定义字段值

时间:2018-03-26 16:24:34

标签: wordpress search woocommerce custom-fields

我尝试在woocommerce 搜索中包含自定义字段值,但我遇到了问题。

在谷歌和Stack上,我看到了pre_get_posts的例子,所以我认为这是一个很好的方向,我做了这样的代码:

function custom_search( $query ) {

    if( ! is_admin() && $query->is_main_query() ) {

        if ( $query->is_search() ) { 

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

            $query->set( 'meta_query', $meta_query );

        }

    }

}

add_action( 'pre_get_posts' , 'custom_search' );

不幸的是它没有用。你能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

我看到你做错了什么,这是我在自己的实例上做的一个工作示例。

function custom_search( $query ) {

    if( ! is_admin() && $query->is_main_query() ) {

        if ( $query->is_search() ) { 

            $meta_query = $query->get( 'meta_query' );

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

            $query->set( 'meta_query', $meta_query );

        }

    }

}

add_action( 'woocommerce_product_query' , 'custom_search' );

由于您正在使用Woocommerce搜索woocommerce_product_query将是正确的钩子,为了安全起见,保留现有默认值$query->get( 'meta_query' );

  

参考:   WooCommerce search products between price range using WP_Query

感谢OP给我带来这个案例:)

答案 1 :(得分:0)

这是来自wordpress.stackexchange.com的类似问题:

这就是我想要的,这是正确的解决方案