Cómo crear un orden personalizado para las categorías de WordPress

7 ago 2013, 22:18:45
Vistas: 47.1K
Votos: 7

Tengo este problema que estoy encontrando. Estoy tratando de ordenar mis categorías para mostrarlas en el orden que deseo. He leído la documentación de WordPress sobre todas las opciones de ordenamiento. Sin embargo, no hay indicación de cómo elegir las categorías y hacer que fluyan de la manera que quiero.

Esto es lo que presenta el Codex:

orderby (string) Ordena las categorías alfabéticamente o por ID único de categoría. El valor predeterminado es ordenar por ID de Categoría. Valores válidos:
- id
- name - predeterminado
- slug
- count
- term_group

order (string) Orden de clasificación para categorías (ascendente o descendente). El valor predeterminado es ascendente. Valores válidos:
- asc - predeterminado
- desc

Sin embargo, como mencioné, esto no me ayuda porque necesito que se muestren en el orden que yo elija.

Aquí está el código que estoy implementando en este momento, que está en el orden en que quiero que se muestren.

<?php
// Argumentos para obtener las categorías en un orden específico
$args = array(
'orderby' => 'ID',
'order' => 'ASC',
'include' => '5,6,7,8,29,9,10,11,12,13,14,15,16'
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Ver todas las entradas en %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
?>
3
Comentarios

Esta publicación podría ayudar http://www.wphub.com/sorting-categories-custom-sort-order/

Srikanth AD Srikanth AD
7 ago 2013 22:30:59

Gracias por ese enlace. Lo revisé pero parece ser mucho trabajo y realmente no quiero usar un plugin tampoco. Pero te agradezco mucho por responder tan rápido. Estoy realmente agradecido por el tiempo que tomaste para intentar ayudar.

Wayne Hatter Jr. Wayne Hatter Jr.
7 ago 2013 22:56:58

Esto podría ayudar. Aunque es para publicaciones, la segunda solución podría ser útil para ti ya que usa php y arrays.

Sisir Sisir
7 ago 2013 23:01:40
Todas las respuestas a la pregunta 3
0

Si ya estás usando Advanced Custom Fields (¡y deberías!), puedes crear un campo de orden para tus categorías desde el cual puedes establecer su orden manualmente de forma numérica.

Entonces todo lo que tienes que hacer es:

$categories = get_categories( $args );  

usort($categories, function($a, $b) {
   return get_field("category_order", "category_".$a->term_id) - get_field("category_order", "category_".$b->term_id);
});

foreach ($categories as $category){
...

Donde category_order es el nombre del campo que creaste con ACF.

Nota: Usando la forma de usort de PHP 5.3.

3 ene 2014 09:03:58
1

Bien, encontré este plugin que hace exactamente lo que necesito. No quería usar un plugin, pero este parece bastante ligero y cumplió perfectamente con el trabajo. http://wordpress.org/plugins/taxonomy-terms-order/

7 ago 2013 23:42:54
Comentarios

Al 2021-07-19, no refleja el orden de clasificación deseado en el front-end. Usando WordPress 5.7.2 con el tema Twenty Twenty One OOTB

klewis klewis
19 jul 2021 23:20:50
1

El código original funcionará si cambias los argumentos a: 'orderby' => 'include'

$args = array(
    'orderby' => 'include',
    'order' => 'ASC',
    'include' => '5,6,7,8,29,9,10,11,12,13,14,15,16'
);
$categories = get_categories($args);
foreach($categories as $category) {
    echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf(     __( "Ver todas las entradas en %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
18 oct 2019 18:44:29
Comentarios

sí, eso funciona para mí :)

Nuno Sarmento Nuno Sarmento
5 ago 2020 18:58:29