代码之家  ›  专栏  ›  技术社区  ›  kanlukasz

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

  •  5
  • kanlukasz  · 技术社区  · 7 年前

    我尝试在woocommerce中包含自定义字段值 搜索 但我有个问题。

    在Google和Stack上,我也看到了pre\u get\u帖子的例子,所以我认为这是一个很好的方向,我编写了如下代码:

    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 回复  |  直到 7 年前
        1
  •  4
  •   Musk    7 年前

    我知道你做错了什么,这里有一个我自己做的工作示例。

    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带给我这个案子:)

        2
  •  2
  •   kanlukasz    6 年前

    下面是我的类似问题 wordpress.stackexchange.com :

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