Ordenar términos de taxonomía en orden alfabético
Tengo la siguiente consulta:
<?php
$args = array(
'hide_empty' => false,
'orderby' => '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 }
} ?>
que muestra todos los términos de taxonomía de la taxonomía projets-location
, he añadido los atributos orderby
y order
arriba pero AÚN NO se están mostrando en orden alfabético, ¿estoy siendo tonto aquí o hay algo que estoy haciendo mal? ¡Cualquier sugerencia sería muy apreciada!

Según el Codex de WordPress para get_terms
en este enlace
https://developer.wordpress.org/reference/functions/get_terms/, los siguientes campos de términos son aceptados en el argumento order_by
: 'name', 'slug', 'term_group', 'term_id', 'id', 'description'
y estás usando title
que no está entre los campos de términos aceptados, por lo que ese podría ser el problema.

No logré ordenar por nombre usando el argumento orderby, así que simplemente usé una función de ordenación ::
// ordenar por nombre ASC - cambia > por < para ordenar DESC
function sortByName($a, $b) {
return $a->name > $b->name;
}
$terms = get_terms( 'projets-location', $args );
usort($subterms, 'sortByName');
foreach ( $terms as $term ) {
....

Prueba con 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 }
} ?>
