get_terms() orderby nombre no funciona – wordpress

4 minutos de lectura

avatar de usuario
ayudadev

Estoy usando wordpress, quiero que los términos de taxonomía de primer nivel se ordenen por nombre, pero el código a continuación no me da el resultado deseado. Aquí está mi código:

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

Cuando agrego debajo de la clasificación de php, funciona perfectamente. Pero quiero saber por qué la clasificación predeterminada de wordpress no funciona correctamente:

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

  • ¿Intentó ‘pedir’ => ‘ASC’, en lugar de DESC?

    – Ashkar

    6 de julio de 2017 a las 7:56

  • sí mismo resultado incorrecto @Ashkar

    – aiddev

    6 de julio de 2017 a las 7:57


  • hola me esta funcionando

    – Ashkar

    6 de julio de 2017 a las 8:02

  • Aquí está el código que funcionó para mí, ‘category’, ‘hide_empty’ => 0, ‘hierarchical’ => 1, ‘parent’ => 0, ‘orderby’ =>’nombre’, ‘pedido’ => ‘ASC’, ‘campos’ => ‘todos’, ); $rs_terms = get_terms(‘categoría’, $argumentos); echo ‘

    ',print_r($rs_terms,1),'

    ‘; ?>

    – Ashkar

    6 de julio de 2017 a las 8:05


  • Acabo de intentar poner su código, pero todavía está ordenando los nombres de las categorías de manera incorrecta (es decir, D, B, pero debería ser B, D) @Ashkar

    – aiddev

    6 de julio de 2017 a las 8:07

Apareció aquí con el mismo problema y, como otros mencionaron, el culpable fue un complemento relacionado con la clasificación de taxonomía. Orden de categoría y orden de términos de taxonomía, en mi caso. Lo desactivé y mi lista de términos se puso en orden.

  • Este era mi problema también. Espero que haya una manera de anular esto sin desinstalar el complemento. Abrió un ticket de soporte sobre este problema: wordpress.org/support/topic/order-terms-by-count

    – Jules Collé

    6 de octubre de 2020 a las 9:21


  • Por ese problema, simplemente agregue ‘ignore_term_order’ => verdadero a su matriz. Funciona para mi.

    – Lars SG

    10 de febrero de 2021 a las 0:12

  • También puede desactivar “Ordenar automáticamente” en la página de configuración del complemento.

    – Iván Aldwin A. Cristóbal

    22 de septiembre de 2021 a las 11:51

  • ¡gracias! Dios mío… horas de búsqueda perdidas en un santiamén

    – Stavros

    12 de noviembre de 2021 a las 13:09

avatar de usuario
Caminata Nalbandyan

Su código debería funcionar bien. Tuve el mismo problema y encontré un gancho en mi complemento que cambió el valor de ‘ordenar por’. Puede que sea el mismo caso.
Le sugiero que busque una función de filtro enganchada a get_terms() en su complemento/tema.

Posibles ganchos:

  • términos_cláusulas
  • get_terms_orderby
  • get_terms_args

EDITAR: Antes de escanear los ganchos, debe intentar agregar 'menu_order' => false a sus argumentos, podría hacer el trabajo por usted. Hay taxonomías con clasificación manual de arrastrar y soltar (menu_order), por lo que solo necesita deshabilitarlas.

avatar de usuario
sagar

Acabo de probar su código en mi host local y funciona.

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

También puede verificar sus módulos PHP instalados. Suponiendo que está en PHP 7.x, asegúrese de que no se hayan cargado módulos APC o APCu.

php -m | grep -i apc

Debería venir sin salida.

Yo tuve el mismo problema. estaba usando el complemento Pedido postal personalizado intuitivo que ordena arrastrando y soltando en el panel de administración de WordPress. Esto anulaba mi “pedido por” en get_terms(), así que cambié el pedido desde el panel de administración. Si usa un complemento similar, tal vez anule el “ordenar por”.

avatar de usuario
marcos nakamine

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

avatar de usuario
marc loeb

El mismo problema aquí, confirmo lo que Cory estaba mencionando, el Orden de categorías y el Orden de términos de taxonomía cambia el orden de búsqueda. Pude evitar eliminar el filtro del complemento solo para mi solicitud con el código a continuación.

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

//do your stuff here...

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

¿Ha sido útil esta solución?