• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Сортировка по глобальным атрибутам товаров (sort by global attributes)

artfyodorov

Новичок
Пытаюсь сделать сортировку в каталоге по атрибуту Объем (pa_obem-l)
PHP:
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 — товары переводятся в черновик, сохраняются и затем заново в статус «Опубликовано»
Но сортировка не работает. Некоторые товары вариативные, может быть такой способ не рабочий в 2022 году?
 
Сверху Снизу