Задать вопрос
@PitDan

WooCommerce. Сортировка по наличию на отдельной странице?

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );

function custom_woocommerce_get_catalog_ordering_args( $args ) {
    $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

    if ( 'stock_list_asc' == $orderby_value ) {
        $args['orderby'] = 'meta_value_num wp_posts.ID';
        $args['order'] = 'ASC';
        $args['meta_key'] = '_stock';
    }
    elseif ( 'stock_list_desc' == $orderby_value ) {
        $args['orderby'] = 'meta_value_num wp_posts.ID';
        $args['order'] = 'DESC';
        $args['meta_key'] = '_stock';
    }

    return $args;
}

add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );

function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['stock_list_desc'] = 'Остаток: по убыванию';
    $sortby['stock_list_asc'] = 'Остаток: по возрастанию';
    return $sortby;
}


Этот код, добавляет сортировку по наличию в каталоге магазина.

ВОПРОС:

Как сформировать на отдельной странице шорткодом или иным способом именно товар который в наличии?
  • Вопрос задан
  • 173 просмотра
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 1
ev_g
@ev_g
Web dev.
Нужно прицепиться к woocommerce_shortcode_products_query

Суть такая:

add_filter("woocommerce_shortcode_products_query", "woocommerce_shortcode_products_query_callback", 10, 3);
function woocommerce_shortcode_products_query_callback($query_args, $atts, $loop_name ) {
    if ($loop_name == "recent_products") {
        $query_args["meta_query"] = [
            [
                "key"     => "_stock_status",
                "value"   => "outofstock",
                "compare" => "NOT LIKE",
            ]
        ];
    }
    return $query_args;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы