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

  • Тема «Сортировка по атрибутам» закрыта для новых ответов.