get_terms() orderby name funktioniert nicht – WordPress

Lesezeit: 3 Minuten

Benutzer-Avatar
Hilfeentwickler

Ich verwende WordPress, möchte, dass Taxonomiebegriffe der ersten Ebene nach Namen geordnet werden, aber der folgende Code gibt mir nicht das gewünschte Ergebnis. Hier ist mein Code:

$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);

Wenn ich unten die PHP-Sortierung hinzufüge, funktioniert es perfekt. Aber ich möchte wissen, warum die Standardsortierung von WordPress nicht richtig funktioniert:

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

  • hast du es mit ‘order’ => ‘ASC’ anstelle von DESC versucht?

    – Aschkar

    6. Juli 2017 um 7:56 Uhr

  • ja dasselbe falsche Ergebnis @Ashkar

    – aiddev

    6. Juli 2017 um 7:57 Uhr


  • Hallo bei mir funktioniert es.

    – Aschkar

    6. Juli 2017 um 8:02 Uhr

  • Hier ist der Code, der für mich funktioniert hat, ‘category’, ‘hide_empty’ => 0, ‘hierarchical’ => 1, ‘parent’ => 0, ‘orderby’ =>’name’, ‘order’ => ‘ASC’, ‘fields’ => ‘all’, ); $rs_terms = get_terms(‘Kategorie’, $args); echo ‘

    ',print_r($rs_terms,1),'

    ‘; ?>

    – Aschkar

    6. Juli 2017 um 8:05 Uhr


  • Ich habe gerade versucht, Ihren Code einzufügen, aber er ordnet die Kategorienamen immer noch falsch an (dh D, B, aber es sollte B, D sein) @Ashkar

    – aiddev

    6. Juli 2017 um 8:07 Uhr

Hier mit dem gleichen Problem aufgetaucht, und wie andere erwähnt, war der Übeltäter ein Plugin im Zusammenhang mit der Taxonomie-Sortierung. Kategoriereihenfolge und Taxonomie-Begriffsreihenfolge, in meinem Fall. Ich habe es deaktiviert und meine Begriffsliste wurde in Ordnung gebracht.

  • Dies war auch mein Problem. Ich hoffe, es gibt eine Möglichkeit, dies zu überschreiben, ohne das Plugin zu deinstallieren. Habe ein Support-Ticket zu diesem Problem eröffnet: wordpress.org/support/topic/order-terms-by-count

    – Jules Colle

    6. Oktober 2020 um 9:21 Uhr


  • Fügen Sie für dieses Problem einfach ‘ignore_term_order’ => true zu Ihrem Array hinzu. Funktioniert bei mir.

    – Lars SG

    10. Februar 2021 um 0:12 Uhr

  • Sie können stattdessen auch “Automatische Sortierung” auf der Seite mit den Plugin-Einstellungen deaktivieren.

    – Ivan Aldwin A. Cristobal

    22. September 2021 um 11:51 Uhr

  • Danke! omg … stundenlanges Suchen im Handumdrehen verloren

    – Stavros

    12. November 2021 um 13:09 Uhr

Benutzer-Avatar
Wanderung Nalbandyan

Ihr Code sollte gut funktionieren. Ich hatte das gleiche Problem und fand einen Haken in meinem Plugin, der den Wert ‘orderby’ änderte. Es könnte der gleiche Fall sein.
Ich schlage vor, Sie suchen in Ihrem Plugin/Theme nach einer Filterfunktion, die an get_terms() angeschlossen ist.

Mögliche Haken:

  • Bedingungen_Klauseln
  • get_terms_orderby
  • get_terms_args

BEARBEITEN: Bevor Sie die Haken scannen, sollten Sie versuchen, sie hinzuzufügen 'menu_order' => false nach Ihren Argumenten könnte es die Arbeit für Sie erledigen. Es gibt Taxonomien mit manueller Drag&Drop-Sortierung (menu_order), Sie müssen sie also nur deaktivieren.

Benutzer-Avatar
sagen

Ich habe Ihren Code gerade auf meinem Localhost getestet und er funktioniert.

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

Sie können auch Ihre installierten PHP-Module überprüfen. Angenommen, Sie verwenden PHP 7.x, stellen Sie sicher, dass keine APC- oder APCu-Module geladen sind.

php -m | grep -i apc

Sollte ohne Ausgabe kommen.

Ich hatte das gleiche Problem. Ich habe das Plugin verwendet Intuitive benutzerdefinierte Nachbestellung das macht die Bestellung per Drag & Drop im WordPress-Admin-Panel. Dies hat mein “orderby” in get_terms() überschrieben, also habe ich die Bestellung im Admin-Panel geändert. Wenn Sie ein ähnliches Plugin verwenden, überschreibt es möglicherweise das “orderby”.

Benutzer-Avatar
Marcos Nakamine

Versuchen Sie es mit wpdb

<?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
" );
?>

Benutzer-Avatar
Marc Löb

Dasselbe Problem hier, ich bestätige, was Cory erwähnt hat, die Kategoriereihenfolge und die Reihenfolge der Taxonomiebegriffe ändern die Suchreihenfolge. Ich konnte den Plugin-Filter nur für meine Anfrage mit dem folgenden Code entfernen.

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

//do your stuff here...

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

1384140cookie-checkget_terms() orderby name funktioniert nicht – WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy