woocommerce_get_catalog_ordering_args
Дозволяє змінити параметри сортування товарів (відсортувати товари за кастомними полями).
Використання
add_filter( 'woocommerce_get_catalog_ordering_args', 'wp_kama_woocommerce_get_catalog_ordering_args_filter', 10, 3);
/**
* Function for `woocommerce_get_catalog_ordering_args` filter-hook.
*
* @param $args
* @param $orderby
* @param $order
*
* @return
*/
function wp_kama_woocommerce_get_catalog_ordering_args_filter( $args, $orderby, $order ){
// Filter...
return $args;
}- $args
(масив) (обов’язковий) Масив параметрів. Можливі елементи:
orderby(Рядок)
Поле, по якому потрібно відсортувати товари.
Типово: dateorder(рядок)
Порядок сортування товарів.
За замовчуванням: DESCmeta_key(Рядок)
Ключ, за значеннями якого потрібно відсортувати.
За замовчуванням: порожній рядок
- $orderby
(рядок) - Поле яким потрібно відсортувати товари.
- $order
(рядок) - порядок сортування товарів.
Приклади
#1 Додамо нове поле для сортування товарів за знижкою
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 ( 'sale' == $orderby_value ) {
$args = [
'orderby' => 'meta_value_num',
'meta_key' => '_sale_price',
'order' => 'DESC',
];
}
return $args;
}
// Додамо можливість вибору сортування в налаштуваннях каталогу woocommerce
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['sale'] = __( 'By sale', 'woocommerce' );
return $ sortby;
}
Де викликається хук
woocommerce_get_catalog_ordering_args
woocommerce/includes/class-wc-query.php 622
return apply_filters( 'woocommerce_get_catalog_ordering_args', $args, $orderby, $order);
Де використовується хук у WooCommerce
Використання не знайдено.