在 WooCommerce 产品查询中过滤自定义 TEXTAREA 类型属性 NOT EMPTY?

时间:2021-06-25 16:03:44

标签: php wordpress woocommerce hook-woocommerce

我有一个自定义产品属性名称 affiliate_link,它是一个 TEXTAREA 类型字段。

在我的产品查询中,我想隐藏此字段为空白的所有产品。

为此,我在我的 function.php 中写了这个,但它不起作用?

add_filter('woocommerce_product_query_tax_query', 'custom_product_query_meta_query', 10, 2);
function custom_product_query_meta_query( $tax_query, $query ) {
    
    $taxonomy = 'pa_affiliate_link';

    $tax_query[] = array(
        'taxonomy' => $taxonomy,
        'field' => 'name',
        'terms' =>  '',
        'operator' => '!='
    );

   return $tax_query;
}

我也试过用这个:

add_filter('woocommerce_product_query_tax_query', 'custom_product_query_meta_query', 10, 2);
function custom_product_query_meta_query( $tax_query, $query ) {
    
    $taxonomy = 'pa_affiliate_link';

    $tax_query[] = array(
        'taxonomy' => $taxonomy,
        'field' => 'name',
        'terms' =>  array(''),
        'operator' => 'NOT IN'
    );

   return $tax_query;
}

但上面的代码不起作用,而是返回所有结果,即使它有一个空白的affiliate_link字段。

请告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。可能需要稍作调整,因为我尚未对此进行测试,但这与使用元与分类法的上述基本相同。

add_filter('woocommerce_product_query_meta_query', 'custom_product_query_meta_query', 10, 2);

function custom_product_query_meta_query( $meta_query, $query ) {

$meta_query[] = array(
        'key'     => 'affiliate_link',
        'value' => '',
        'compare' => '!='
    );

    return $meta_query;

}