2014-01-31 3 views
1

Хорошо, я знаю, что это может быть глупый вопрос, или вы можете подумать, что его спросили дюжину раз. но либо я в отчаянии и что-то пропустил, либо это какая-то уникальная проблема. Во всяком случае, мне нужна твоя помощь.Woocommerce: Показать товары в алфавитном порядке

Мой клиент хотел показать свои продукты в алфавитном порядке. Все было хорошо, когда я выбираю Default Product Sorting «Custom ordering + Name» Но потом что-то испортилось .. и весь алфавитный заказ в «Sort Products» Screen исчез. Теперь все они показываются по номеру «Заказ».

Есть ли способ сделать возврат продукции обратно в список в алфавитном порядке?

Я бы сделал это вручную в «Sort Products», но есть около 100 продуктов, и я не уверен, когда клиент добавит новые продукты, проблема не вернется.

EDIT
Я обнаружил, что при использовании по умолчанию сортировки (Пользовательский порядок + Имя) в начале всех продуктов, указанных по умолчанию в алфавитном порядке, однако, как только вы перемещаете один элемент из алфавитного порядка (например, один «F» элемент помещен в передней части пункта «а») все для того перепутались, и следует только заказе в соответствии с порядковым номером продукта

+0

попробовать WooCommerce на локальном компьютере и там defoult вариант сортировки в алфавитном порядке посвататься коммерции уронить DOWM вы можете использовать это –

+0

Спасибо, Вики, но не уверен, что вы имеете в виду под моим местным. Опция сортировки по умолчанию, которую я использую. И это работало нормально, пока я не думаю, что мы заявили о перемещении продуктов в «Sort Products». –

+0

Вы проверили этот WooCommerce Admin >> Настройки >> Каталог >> Когда вы по умолчанию установите «Сортировка по умолчанию», они будут отображаться в рейтинге, которое вы задали для каждого продукта. –

ответ

1
<?php 

add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); 

function custom_woocommerce_get_catalog_ordering_args($args) { 
$orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby')); 

if ('random_list' == $orderby_value) { 
$args['orderby'] = 'rand'; 
$args['order'] = ''; 
$args['meta_key'] = ''; 
} 

return $args; 
} 

add_filter('woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby'); 
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); 

function custom_woocommerce_catalog_orderby($sortby) { 
$sortby['random_list'] = 'Random'; 
return $sortby; 
} 
+0

используйте заказ в соответствии с вашей легкостью –

+1

вы также можете использовать плагин http://wordpress.org/plugins/woocommerce-more-sorting/ –

+0

Спасибо, Вики! Я попробую это отрезать сейчас.Но какие аргументы я должен использовать для сортировки по алфавиту? Здесь я вижу, что код делает только «Random», выбрав –

3

чтобы расширить @ ответ Vikas_Gautam и изменить его, чтобы сортировать вы должны сделать следующее:

add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); 

function custom_woocommerce_get_catalog_ordering_args($args) { 
    $orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby')); 

    if ('alphabetical' == $orderby_value) { 
     $args['orderby'] = 'title'; 
     $args['order'] = 'DESC'; 
    } 

    return $args; 
} 

add_filter('woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby'); 
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); 

function custom_woocommerce_catalog_orderby($sortby) { 
    $sortby['alphabetical'] = __('Alphabetical'); 
    return $sortby; 
} 

Взгляните на Кодекс для WP_Query sort parameters.

1

Чтобы расширить ответ на @ helgatheviking, я попробовал это, и он отсортировался в алфавитном порядке (по убыванию), но только если в раскрывающемся списке была выбрана опция «Алфавит» из-за состояния if ('alphabetical' == $orderby_value).

Это мод, который сортирует в алфавитном порядке по возрастанию по умолчанию, различия является условием if ('alphabetical' == $orderby_value || 'menu_order' == $orderby_value) и $args['order'] = 'ASC'

add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); 

function custom_woocommerce_get_catalog_ordering_args($args) { 
    $orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby')); 

    if ('alphabetical' == $orderby_value || 'menu_order' == $orderby_value) { 
     $args['orderby'] = 'title'; 
     $args['order'] = 'ASC'; 
    } 

    return $args; 
} 

add_filter('woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby'); 
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); 

function custom_woocommerce_catalog_orderby($sortby) { 
    $sortby['alphabetical'] = __('Alphabetical'); 
    return $sortby; 
} 

На сайте я работал на сгруппировал продукты, так что я сделал, чтобы они были в алфавитном порядке, а также. ..

add_filter('woocommerce_grouped_children_args', 'custom_grouped_children_args'); 
function custom_grouped_children_args($args){ 
    $args['orderby'] = 'title'; 
    $args['order'] = 'ASC'; 
    return $args; 
} 
0
$catalog_orderby_options = apply_filters('woocommerce_catalog_orderby', array(
     'menu_order' => __('Default sorting', 'woocommerce'), 
    here -> 'title' => __('Sortierung nach Titel, A–Z', 'woocommerce'), 
     'popularity' => __('Sort by popularity', 'woocommerce'), 
     'rating'  => __('Sort by average rating', 'woocommerce'), 
     'date'  => __('Sort by newness', 'woocommerce'), 
     'price'  => __('Sort by price: low to high', 'woocommerce'), 
     'price-desc' => __('Sort by price: high to low', 'woocommerce') 
    )); 
+1

Пожалуйста, объясните свой ответ ..... – GYaN

Смежные вопросы