Вы можете использовать WP_Query
для сортировки всех сообщений:
$args = array(
'posts_per_page' => -1,
'post_type' => 'post',
);
$the_query = new WP_Query( $args );
Затем l oop через сообщения и добавьте свою html разметку:
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
// your menu item here
endwhile;
endif;
* СОВЕТ
Чтобы добавить это в начало вашего меню, вы можете использовать wp_nav_menu_filter
Чтобы настроить таргетинг на меню, измените имя фильтра, включив в него идентификатор меню. В моем случае идентификатор меню menu-main
, поэтому я использую только main
, например wp_nav_menu_main_items
.
Рабочий пример:
add_filter( 'wp_nav_menu_main_items', 'prefix_add_menu_item', 10, 2 );
/**
* Add Menu Item to start of menu
*/
function prefix_add_menu_item ( $items, $args ) {
$start_menu_item = '<li class="menu-item">Posts</li>';
$new_items = $start_menu_item . $items;
return $new_items;
}
Комбинировано для получения желаемого результата:
add_filter( 'wp_nav_menu_main_items', 'prefix_add_menu_item', 10, 2 );
/**
* Add Menu Item to start of menu
*/
function prefix_add_menu_item ( $items, $args ) {
$args = array(
'posts_per_page' => 3,
'post_type' => 'post',
);
$the_query = new WP_Query( $args );
$start_menu_item = '<li class="menu-item">Posts';
$start_menu_item .= '<ul class="sub-menu">';
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
$start_menu_item .= '<li class="menu-item">'.get_the_title().'</li>';
endwhile;
endif;
$start_menu_item .= '</ul>';
$start_menu_item .= '</li>';
$new_items = $start_menu_item . $items;
return $new_items;
}
Надеюсь, это поможет ...