Исключая отсутствующие товары в шорткоде [products or product_category] WooCommerce - PullRequest
1 голос
/ 02 апреля 2020

То, чего я хочу достичь sh, заключается в следующем. В WooCommerce 3.9, всякий раз, когда я использую короткий код [product_category category = "jeans"] или любую другую категорию, я хочу, чтобы он отображал товары этой категории , за исключением товары, которых нет в наличии

Я знаю, что могу изменить настройку, чтобы скрыть все товары, отсутствующие на складе, в WooCommerce, но я хочу, чтобы они отображались во всех местах (архив, магазин, виджеты), кроме случаев, когда я использую шорткод

. коды, подобные приведенному ниже (я полагаю, работает только для [products category = "jeans"]), так что это также будет вариант

add_filter( 'woocommerce_shortcode_products_query' , 'tryout_exclude_oos_shortcodes');

function tryout_exclude_oos_shortcodes($query_args){

    $query_args['tax_query'] =  array(array( 
        'taxonomy' => 'product_visibility',
        'field'    => 'slug',
        'terms'   => array('outofstock'),
        'compare' => 'NOT IN',  
        )); 

    return $query_args;
}

В этот момент я много пробовал, но мои знания не т ограничен в данный момент. Возможно ли то, что я спрашиваю, и так ... чего мне не хватает?

1 Ответ

0 голосов
/ 04 апреля 2020

Попробуйте:

add_filter( 'woocommerce_shortcode_products_query', function( $query_args, $atts, $loop_name ){
    if( $loop_name == 'product_category' ){
        $query_args['meta_query'] = array( array(
            'key'     => '_stock_status',
            'value'   => 'outofstock',
            'compare' => 'NOT LIKE',
        ) );
    }
    return $query_args;
    }, 10, 3);

Вы можете изменить имя l oop в соответствии с вашим приложением. Код входит в функции вашей дочерней темы. php.

...