Получить массив порядка названий терминов категорий товаров по «порядку меню» в Woocommerce - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть следующий код, который ищет категории WooCommerce и добавляет их в пользовательские вкладки:

function wcbox_get_woo_categories()
{
    $wp_cat = get_categories(array('hide_empty' => 0, 'taxonomy' => 'product_cat' ));

    $result = array();
    foreach ($wp_cat as $cat)
    {
        $result[] = array('value' => $cat->name, 'label' => $cat->name);
    }
    return $result;
}

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

Вся проблема возникает, когда я делю месяцы на категории и ищу их с помощью этой функции. Категории должны соответствовать порядку месяцев, но из-за этой функции они следуют в алфавитном порядке.

Как я могу решить эту проблему?

для получения дополнительной информации я использую плагин WCBox.

Вот как это работает прямо сейчас: enter image description here

Показывает категории и товар.

Плагин также имеет этот массив

            array(
                'type' => 'multiselect',
                'name' => 'filter_category',
                'label' => __('Choose Categories', 'wcbox'),

                'items' => array(
                    'data' => array(
                        array(
                            'source' => 'function',
                            'value'  => 'wcbox_get_woo_categories',
                        ),
                    ),
                ),
                'dependency' => array(
                    'field'    => 'filter_type',
                    'function' => 'vp_dep_is_categories',
                ),
            ),  

1 Ответ

0 голосов
/ 06 ноября 2018

Это очень странно, так как по умолчанию категории продуктов orderby устанавливаются в порядке меню. Так что, возможно, что-то еще вмешивается в этот процесс.

В бэкэнде (настройки) Продукты> категории, каждый термин должен быть упорядочен так, как вы хотите, чтобы он отображался (по порядку меню).

Вы можете напрямую использовать get_terms() WP функцию вместо get_categories() (которая использует get_terms()).

Чтобы изменить порядок меню в вашем случае, используйте следующее:

function wcbox_get_woo_categories() {

    $term_names = get_terms( array(
        'hide_empty' => 0, 
        'taxonomy'   => 'product_cat', 
        'orderby'    => 'meta_value_num', 
        'meta_key'   => 'order',
        'fields'     => 'names',
    ) );

    $result = array();

    foreach( $term_names as $term_name ){
        $result[] = array( 'value' => $term_name, 'label' => $term_name );
    }

    return $result;
}

Должно работать.

...