get_terms() не работает по имени - wordpress

Я использую wordpress, хочу, чтобы термины таксономии первого уровня были упорядочены по имени, но приведенный ниже код не дает мне желаемого результата. Вот мой код:

$args = array(
    'taxonomy' => 'tax-category', 
    'hide_empty' => 0,
    'hierarchical' => 1,
    'parent' => 0,
    'orderby'=>'name',
    'order' => 'DESC',
    'fields' => 'all',
);
$rs_terms = get_terms('tax-category', $args);

Когда я добавляю ниже сортировку php, она работает отлично. Но хотите знать, почему сортировка WordPress по умолчанию не работает должным образом:

usort($rs_terms, function($a, $b){
    return strcmp($a->name, $b->name);
});

person aiddev    schedule 06.07.2017    source источник
comment
вы пробовали 'order' => 'ASC' вместо DESC?   -  person Ashkar    schedule 06.07.2017
comment
да такой же неправильный результат @Ashkar   -  person aiddev    schedule 06.07.2017
comment
Привет, это работает для меня.   -  person Ashkar    schedule 06.07.2017
comment
Вот код, который работал у меня: ‹?php $args = array( 'taxonomy' =› 'category', 'hide_empty' =› 0, 'hierarchical' =› 1, 'parent' =› 0, 'orderby' =›'имя', 'порядок' =› 'ASC', 'поля' =› 'все', ); $rs_terms = get_terms('категория', $args); echo '‹pre›',print_r($rs_terms,1),'‹/pre›'; ?›   -  person Ashkar    schedule 06.07.2017
comment
Я только что попытался вставить ваш код, но он по-прежнему неправильно упорядочивает названия категорий (т.е. D, B, но должно быть B, D) @Ashkar   -  person aiddev    schedule 06.07.2017
comment
как вы отобразили $rs_terms?   -  person Ashkar    schedule 06.07.2017


Ответы (7)


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

person Cory    schedule 14.03.2019
comment
Это была и моя проблема. Надеюсь, есть способ переопределить это, не удаляя плагин. Открыл запрос в службу поддержки по поводу этой проблемы: wordpress.org/support/topic/order. -условия по количеству - person Jules Colle; 06.10.2020
comment
По этой проблеме просто добавьте «ignore_term_order» => true в свой массив. Работает на меня. - person Lars SG; 10.02.2021

Ваш код должен работать нормально. У меня была такая же проблема, и я нашел в своем плагине хук, который изменил значение «orderby». Это может быть тот же случай.
Я предлагаю вам найти функцию фильтра, подключенную к get_terms() в вашем плагине/теме.

Возможные крючки:

  • terms_clauses
  • get_terms_orderby
  • get_terms_args

РЕДАКТИРОВАТЬ: Прежде чем приступить к сканированию хуков, попробуйте добавить 'menu_order' => false к своим аргументам, это может помочь вам. Есть таксономии с ручной сортировкой перетаскиванием (menu_order), так что вам просто нужно ее отключить.

person Hike Nalbandyan    schedule 22.10.2017

Я только что проверил ваш код на своем локальном хосте, и он работает.

                    'orderby'           => 'name', 
                    'order'             => 'ASC',
                    'hide_empty'        => false, 
                    'fields'            => 'all', 
                    'parent'            => 0,
                    'hierarchical'      => true, 
                    'child_of'          => 0,
                    'childless'         => false,
                    'pad_counts'        => false, 
                    'cache_domain'      => 'core'
person sagar    schedule 06.07.2017

Вы также можете проверить установленные модули PHP. Предполагая, что вы используете PHP 7.x, убедитесь, что модули APC или APCu не загружены.

php -m | grep -i apc

Должен прийти без вывода.

person Redy Host    schedule 28.03.2018

У меня такая же проблема. Я использовал плагин Intuitive Custom Post Order< /em>, который упорядочивает перетаскиванием в панели администратора WordPress. Это переопределяло мой «orderby» в get_terms(), поэтому я изменил порядок в панели администратора. Если вы используете любой подобный плагин, он может переопределить «orderby».

person Αntonis Papadakis    schedule 16.01.2019

попробуй через впдб

<?php
global $wpdb;
$rs_terms = $wpdb->get_results( "
    SELECT
        t.*
    FROM
        {$wpdb->prefix}term_taxonomy AS tt
    INNER JOIN
        {$wpdb->prefix}terms AS t
        ON t.term_id = tt.term_id
    WHERE
        tt.taxonomy = 'tax-category'
        AND tt.parent = '0'
    ORDER BY
        t.name DESC
" );
?>
person Marcos Nakamine    schedule 28.05.2021

Та же проблема здесь, я подтверждаю то, что упоминал Кори, порядок категорий и порядок терминов таксономии действительно изменяет порядок поиска. Мне удалось обойти удаление фильтра плагинов только по моему запросу с помощью приведенного ниже кода.

remove_filter('terms_clauses', 'TO_apply_order_filter', 10, 3);

//do your stuff here...

add_filter('terms_clauses', 'TO_apply_order_filter', 10, 3);
person Marc Loeb    schedule 29.07.2021