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);
});
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
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.
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”.
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
" );
?>
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);
¿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 ‘
‘; ?>
– 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