jimmykoks
@jimmykoks

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

Добрый времени суток!

Подскажите, что не так?
Есть товары с атрибутом "Расстояние" (значение в цифрах). Необходимо добавить сортировку по этому атрибуту.

В functions.php вставляю это:
/**
 *  Определяем критерии для сортировки с опциями, определенными в методе ниже
 */
add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args');

function custom_woocommerce_get_catalog_ordering_args( $args ) {
    global $wp_query;
        // Меняем $_SESSION на $_GET
    if (isset($_GET['orderby'])) {
        switch ($_GET['orderby']) :
            case 'pa_distance' :
                $args['order'] = 'ASC';
                $args['meta_key'] = 'pa_distance';
                $args['orderby'] = 'meta_value_num';
            break;
        endswitch;
    }
    return $args;
}

/**
 *  Добавляем способ сортировки в выпадающий список
 */
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby');

function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['pa_distance'] = 'Сортировка по расстоянию от центра';
    return $sortby;
}

/**
 *  Сохраняем атрибуты товара в виде мета данных к записи для того, чтобы использовать их в сортировке и поиске
 */
add_action( 'save_post', 'save_woocommerce_attr_to_meta' );
function save_woocommerce_attr_to_meta( $post_id ) {
        // Получаем названия атрибутов .. Для каждого элемента получаем индекс и название атрибута
        // Затем используем индекс для получения соответствующего отправленного значения из массива attribute_values.
    foreach( $_REQUEST['attribute_names'] as $index => $value ) {
        update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] );
    }
}


В выпадающем списке сортировки, новый пункт появляется, но при его выборе, товары не находятся - "Товаров, соответствующих вашему запросу, не обнаружено."

Буду очень благодарен за помощь.
  • Вопрос задан
  • 3164 просмотра
Решения вопроса 1
Для того, чтобы использовать атрибуты для сортировки, они должны быть сохранены как мета данные. Читай тут
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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