Dynami c Nav Выпадающее меню сообщений - PullRequest
0 голосов
/ 26 мая 2020

Как лучше всего реализовать динамически сгенерированное меню вне основной навигации, показывающее все сообщения?

Спасибо!

enter image description here

1 Ответ

1 голос
/ 26 мая 2020

Вы можете использовать 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;
}

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...