j'ai quelques catégories de messages en tant qu'élément d'un menu de navigation principal, et j'aimerais afficher les dix derniers messages de cette catégorie en tant que sous-menu.
ex: Catégorie1 Lastpost1 Lastpost2
Le menu principal est construit dans le panneau d’administration, et je me demande s’il existe un crochet ou quelque chose pour y parvenir automatiquement. Je sais comment coder cela en dur, mais je voudrais continuer à utiliser l'édition de menu sympa du panneau d'administration.
des idées?
Je le réalise enfin avec ce code dans function.php
// Front end only, don't hack on the settings page
if ( ! is_admin() ) {
// Hook in early to modify the menu
// This is before the CSS "selected" classes are calculated
add_filter( 'wp_get_nav_menu_items', 'display_lasts_ten_posts_for_categories_menu_item', 10, 3 );
}
// Add the ten last posts of af categroy menu item in a sub menu
function display_lasts_ten_posts_for_categories_menu_item( $items, $menu, $args ) {
$menu_order = count($items); /* Offset menu order */
$child_items = array();
// Loop through the menu items looking category menu object
foreach ( $items as $item ) {
// Test if menu item is a categroy and has no sub-category
if ( 'category' != $item->object || ('category' == $item->object && get_category_children($item->object_id)) )
continue;
// Query the lasts ten category posts
$category_ten_last_posts = array(
'numberposts' => 10,
'cat' => $item->object_id,
'orderby' => 'date',
'order' => 'DESC'
);
foreach ( get_posts( $category_ten_last_posts ) as $post ) {
// Add sub menu item
$post->menu_item_parent = $item->ID;
$post->post_type = 'nav_menu_item';
$post->object = 'custom';
$post->type = 'custom';
$post->menu_order = ++$menu_order;
$post->title = $post->post_title;
$post->url = get_permalink( $post->ID );
/* add children */
$child_items[]= $post;
}
}
return array_merge( $items, $child_items );
}
Cela affichera en tant que sous-menu, les dix derniers articles d'une catégorie placés en tant qu'élément de menu ou élément de sous-menu dans le panneau d'administration.
Ce code est fortement inspiré de ceci: http://codeseekah.com/2012/03/05/list-all-posts-in-wordpress-navigation-menu/