web-dev-qa-db-fra.com

Comment créer un tri personnalisé pour les catégories WordPress

J'ai ce problème que je rencontre. J'essaie de trier mes catégories à afficher dans l'ordre que je veux. J'ai lu la documentation WordPress sur toutes les options de tri. Cependant, il n’ya aucune inclination à choisir les catégories et à les faire circuler comme je le souhaite.

Voici ce que présente le Codex:

orderby (chaîne) Triez les catégories par ordre alphabétique ou par ID de catégorie unique. La valeur par défaut est Trier par ID de catégorie. Valeurs valides:
- id
- nom - par défaut
- limace
- compter
- term_group

order (string) Ordre de tri pour les catégories (croissant ou décroissant). La valeur par défaut est ascendante. Valeurs valides:
- asc - default
- desc

Cependant, comme je l’ai dit, cela ne m’aide pas, car j’ai besoin qu’ils apparaissent dans l’ordre que je choisis.

Voici le code que je suis en train de mettre en place. Qui est dans l'ordre que je veux qu'ils affichent.

<?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(     __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
?>
4
Wayne Hatter Jr.

Si vous utilisez déjà Champs personnalisés avancés (ce que vous devriez être!), Vous pouvez créer un champ de commande pour vos catégories à partir duquel vous pouvez les définir manuellement par ordre numérique.

Ensuite, tout ce que vous avez à faire est de:

$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){
...

category_order est le nom du champ que vous avez créé avec ACF.

Remarque: Utilisation de la manière usort PHP 5.3.

9
luke

Ok, j'ai trouvé ce plugin qui fait exactement ce que je veux. Je ne voulais pas utiliser de plugin, mais celui-ci semblait assez léger et faisait parfaitement l'affaire. http://wordpress.org/plugins/taxonomy-terms-order/

2
Wayne Hatter Jr.