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] );
    }
}


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

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

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

Войти через центр авторизации
Похожие вопросы