首页 > 解决方案 > 仅在具有 Elementor 的小部件上隐藏缺货的 WooCommerce 产品

问题描述

我正在尝试在 Elementor 中添加产品存档小部件,但在此小部件中,必须特别隐藏“缺货”产品。

我尝试修改此代码,但没有成功。

add_filter( 'woocommerce_product_query_meta_query', 'shop_only_instock_products', 10, 2 );
function shop_only_instock_products( $meta_query, $query ) {
    // Only on shop archive pages
    if( '#outst' ) return $meta_query;

    $meta_query[] = array(
        'key'     => '_stock_status',
        'value'   => 'outofstock',
        'compare' => '!='
    );
    return $meta_query;
}

有任何想法吗?

elementor的侧边栏:

Elementor 侧边栏

产品小部件存档:
产品小部件存档

标签: phpwoocommercewidgetstockelementor

解决方案


对于小部件,您应该改用woocommerce_products_widget_query_args钩子。要隐藏缺货产品,有两种方法:

1)。使用元查询:

add_filter( 'woocommerce_products_widget_query_args', 'custom_products_widget_query_arg', 10, 1 );
function custom_products_widget_query_arg( $query_args ) {
    if( ! is_admin() ) {
        $query_args['meta_query'][] = array(
            'key'     => '_stock_status',
            'value'   => 'outofstock',
            'compare' => '!='
        );
    }
    return $query_args;
}

2)。或使用税务查询:

add_filter( 'woocommerce_products_widget_query_args', 'custom_products_widget_query_arg', 10, 1 );
function custom_products_widget_query_arg( $query_args ) {
    if( ! is_admin() ) {
        $query_args['tax_query'][] = array(
            'taxonomy' => 'product_visibility',
            'field'    => 'name',
            'terms'    => array('outofstock'),
            'operator' => 'NOT IN'
        );
    }
    return $query_args;
}

代码在您的活动子主题(或活动主题)的functions.php 文件中。两者都可以工作。

有关的:


推荐阅读