Woocommerce для разработчиков — Сортировка товаров от старых к более новым

В плагине Wocommerce реализована возможность отсортировать товар Вашем магазине по желанию клиента.

В этой заметке я покажу как добавить еще один вид сортировки товара к уже установленным возможностям. А именно, мы добавим сортировку товара от самых старых (т.е. те которые были добавлены первыми) до новых.

Для реализации этой возможности в woocommerce предусмотрены 3 фильтра:

  • woocommerce_get_catalog_ordering_args;
  • woocommerce_default_catalog_orderby_options;
  • woocommerce_catalog_orderby.

Итак, для добавления нового параметра сортировки необходимо добавить следующий код в файл functions.php:

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

 // Apply custom args to main query
function custom_woocommerce_get_catalog_ordering_args( $args ) {
    $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    if ( 'oldest_to_recent' == $orderby_value ) {
        $args['orderby'] = 'date';
        $args['order'] = 'ASC';
    }
    return $args;
}

// Create new sorting method
function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['oldest_to_recent'] = __( 'От старых к новым', 'synthetica' );
    return $sortby;
}

Результат работы данного кода Вы можете увидеть в панели управления.

Выбор метода сортировки товаров в каталоге

Этот материал является переводом статьи: WooCommerce: sort products from oldest to most recent.