Php 仅在使用Elementor的小部件上隐藏缺货的WooCommerce产品

Php 仅在使用Elementor的小部件上隐藏缺货的WooCommerce产品,php,woocommerce,widget,stock,elementor,Php,Woocommerce,Widget,Stock,Elementor,我试图在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

我试图在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的侧栏:

产品小部件存档:

对于小部件,您应该使用
woocommerce\u products\u widget\u query\u args
hook。要隐藏缺货产品,有两种方法:

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文件。两者都能起作用

相关的: