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

Как сделать сортировку по атрибуту Woocommerce?

Пытаюсь сделать сортировку в каталоге по атрибуту Объем (pa_obem-l)
function woocommerce_get_catalog_ordering_attribute_args( $args ) {
global $wp_query;
if (isset($_GET['orderby'])) {
switch ($_GET['orderby']) :
case 'pa_obem-l_desc' :
$args['order'] = 'DESC';
$args['meta_key'] = 'pa_obem-l';
$args['orderby'] = 'meta_value_num';
break;
case 'pa_obem-l_asc' :
$args['order'] = 'ASC';
$args['meta_key'] = 'pa_obem-l';
$args['orderby'] = 'meta_value_num';
break;
endswitch;
}
return $args;
}
add_filter('woocommerce_get_catalog_ordering_args', 'woocommerce_get_catalog_ordering_attribute_args');

function woocommerce_catalog_orderby_attribute( $sortby ) {
if (is_product_category("emkosti") || is_nested_product_category("emkosti")) {
$sortby['pa_obem-l_desc'] = 'Объем: от большего';
$sortby['pa_obem-l_asc'] = 'Объем: от меньшего';
}
return $sortby;
}

function is_nested_product_category($slug_name)
{
$cat = get_term_by('slug', $slug_name, 'product_cat');

return term_is_ancestor_of($cat->term_id, get_queried_object_id(), 'product_cat');
}

add_filter('woocommerce_catalog_orderby', 'woocommerce_catalog_orderby_attribute');

add_action( 'save_post', 'woocommerce_attribute_to_meta' );
function woocommerce_attribute_to_meta( $post_id ) {
if (!empty($_REQUEST['attribute_names'])){
foreach( $_REQUEST['attribute_names'] as $index => $value ) {
update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] );
}
}
}

Перевожу товары в черновик, затем публикую заново через Sheet Editor
Фильтр в sort by появляется, но товары не сортируются.
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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