Come creare un ordinamento personalizzato per le categorie WordPress
Ho questo problema che sto affrontando. Sto cercando di ordinare le mie categorie per visualizzarle nell'ordine che desidero. Ho letto la documentazione WordPress su tutte le opzioni di ordinamento. Tuttavia, non c'è alcuna indicazione su come scegliere le categorie e farle scorrere nel modo che voglio.
Questo è ciò che presenta il Codex:
orderby (stringa) Ordina le categorie alfabeticamente o per ID categoria univoco. Il valore predefinito è l'ordinamento per ID Categoria. Valori validi:
- id
- name - predefinito
- slug
- count
- term_grouporder (stringa) Ordine di ordinamento per le categorie (ascendente o discendente). Il valore predefinito è ascendente. Valori validi:
- asc - predefinito
- desc
Tuttavia, come ho detto, questo non mi aiuta perché ho bisogno che vengano visualizzate nell'ordine che scelgo io.
Ecco il codice che sto implementando al momento, che è nell'ordine in cui voglio che vengano visualizzate.
<?php
$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( __( "Visualizza tutti i post in %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
?>

Se stai già utilizzando Advanced Custom Fields (e dovresti farlo!) puoi creare un campo di ordinamento per le tue categorie da cui puoi impostarle manualmente in ordine numerico.
Quindi tutto ciò che devi fare è:
$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){
...
Dove category_order
è il nome del campo che hai creato con ACF.
Nota: Utilizzando il metodo usort di PHP 5.3.

Okay, ho trovato questo plugin che fa esattamente quello che volevo. Non volevo usare un plugin ma questo sembrava piuttosto leggero e ha fatto il lavoro perfettamente. http://wordpress.org/plugins/taxonomy-terms-order/

Il codice originale funzionerà se modifichi gli argomenti con: '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( __( "Visualizza tutti i post in %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
