J'ai utilisé cette solution pour un projet ponctuel. Ce projet n'est pas un blog, c'est un site
internet dont la navigation est basée sur les catégories.
La home devait afficher pour chaque catégorie un post. Wordpress ne permet pas, sans plugin de choisir
l'ordre dans lequel doivent apparaître les catégories. Bien que la méthode get_categories()
accepte un argument orderby
, les champs que l'on peut trier
ne sont guère intéressants (id, name - default, slug, count, term_group).
Cependant, il y a un endroit dans le backoffice de Wordpress ou il est possible de trier les catégories:
Appeareance - Menus.
En créant un menu et en ne mettant dedans que des catégories, Wordpress permet d'ordonner cette liste.
Si dans le code du template on est capable de consulter ce menu et de récupérer l'id de chaque catégorie, alors
on peut afficher les catégories dans l'ordre voulu en faisant:
Pour chaque noeud du menu, donne moi la catégorie qui a cet id, merci.
Voici le code php utilisé dans le template:
// Récupérer les éléments du menu $menu_items = wp_get_nav_menu_items("menu_nav"); // pour chaque élément du menu, récupérer la catégorie associée foreach ($menu_items as $mi) { $c = get_category($mi->object_id); $cat_num_post = $c->count; // Récupérer le premier post de la catégorie $home_post = get_posts(array( "cat"=> $c->term_id, "suppress_filters" => false, "posts_per_page" => 1 ) ); // faire des trucs avec tout ça // ... // pim pam ... // ... }