Ordonarea alfabetică a termenilor taxonomiei

4 mai 2017, 20:05:15
Vizualizări: 23.7K
Voturi: 1

Am următoarea interogare:

<?php 
$args = array(  
    'hide_empty' => false,
    'orderby' => 'name', // folosește 'name' în loc de 'title'
    'order' => 'DESC'
);
$terms = get_terms( 'projets-location', $args );
 if ( !empty( $terms ) && !is_wp_error( $terms ) ){
     foreach ( $terms as $term ) { ?>   

        <h5 id="<?php echo $term->slug; ?>" class="filter-menu-item" data-filter=".<?php echo $term->slug; ?>">
            <strong><?php echo $term->name; ?></strong>
        </h5>

    <?php }
 } ?>   

care afișează toți termenii taxonomiei din projets-location. Am adăugat atributele orderby și order mai sus, dar TOT NU se afișează în ordine alfabetică deloc. Fac eu ceva greșit sau există o problemă? Orice sugestie ar fi foarte apreciată!

0
Toate răspunsurile la întrebare 4
2

Începând cu versiunea 4.5.0, taxonomiile trebuie transmise prin argumentul 'taxonomy' în tabloul $args:

$terms = get_terms( array(
    'taxonomy' => 'projets-location',
    'orderby' => 'name',
    'order' => 'DESC' 
) );
4 mai 2017 21:53:36
Comentarii

Tocmai am încercat asta, dar nu a funcționat?

user1374796 user1374796
4 mai 2017 23:21:08

nu funcționează pe WP 5.3

niki niki
28 mar. 2020 08:13:02
1

Conform WordPress Codex pentru funcția get_terms, disponibilă la linkul https://developer.wordpress.org/reference/functions/get_terms/, următoarele câmpuri sunt acceptate în argumentul order_by: 'name', 'slug', 'term_group', 'term_id', 'id', 'description'. În schimb, tu utilizezi title, care nu se află printre câmpurile acceptate, ceea ce ar putea fi cauza problemei.

4 mai 2017 20:20:05
Comentarii

chiar și urmând acest ghid, încă nu le ordonează deloc :(

user1374796 user1374796
4 mai 2017 20:45:38
0

Nu am reușit să ordonez după nume folosind argumentul orderby, așa că am folosit o funcție de sortare ::

// ordonează după nume ASC - schimbă > în < pentru ordonare DESC
function sortByName($a, $b) {
    return $a->name > $b->name;
}

$terms = get_terms( 'projets-location', $args );
usort($subterms, 'sortByName');

foreach ( $terms as $term ) {
   ....
21 iun. 2018 12:38:25
0

Încearcă cu wpdb

<?php
global $wpdb;
$terms = $wpdb->get_results( "
    SELECT
        t.name,
        t.slug
    FROM
        {$wpdb->prefix}term_taxonomy AS tt
    INNER JOIN
        {$wpdb->prefix}terms AS t
        ON t.term_id = tt.term_id
    WHERE
        tt.taxonomy = 'projets-location'
    ORDER BY
        t.name DESC
" );

if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach ( $terms as $term ) { ?>

        <h5 id="<?php echo $term->slug; ?>" class="filter-menu-item" data-filter=".<?php echo $term->slug; ?>">
            <strong><?php echo $term->name; ?></strong>
        </h5>

    <?php }
} ?>
28 mai 2021 21:33:50