2013-04-19 9 views
0

Я пытаюсь исключить страницы из wp_nav_menuwp_nav_menu исключить страницы из меню

Вот функция, чтобы исключить страницы из меню работает хорошо, когда

<?php $page = get_page_by_title('my title'); 
    wp_nav_menu(array('theme_location' => 'menu-2', 'exclude' => $page->ID )); ?> 

работает правильно

НО при использовании

<?php $page = get_page_by_title('my title'); 
     $pag1 = get_page_by_title('my title 1'); 
     $pag2 = get_page_by_title('my title2'); 
    wp_nav_menu(array('theme_location' => 'menu-2', 'exclude' => $page->ID,$pag1->ID,$pag2->ID )); ?> 

Не работает должным образом.

ответ

4

Вот правильная soultuion Я надеюсь, что это помогает некоторым другим людям

 <?php $page = get_page_by_title('my title'); 
    $pag1 = get_page_by_title('my title 1'); 
    $pag2 = get_page_by_title('my title2'); 
    $ids = "{$page->ID},{$pag1->ID},{$pag2->ID}"; 
    wp_nav_menu(array('theme_location' => 'menu-2', 'exclude' => $ids)); ?>  
+0

вот что я сделал для вас есть отправить идентификаторы в кавычках –

+2

я не знаю, если это только изменилось с течением времени, но в коде wp_nav_menu ничего нет, что указывает на то, что вы можете использовать исключение в последней версии WP. – 2014-07-10 17:15:20

+0

Я не знаю, работал ли этот параметр, но он определенно не работает сейчас в WP 3.9.2. –

7

попробовать этот

wp_nav_menu(array('theme_location' => 'menu-2', 'exclude' => '".$page->ID.",".$pag1->ID.",".$pag2->ID."' )); 

проверку этого tutorial

+0

что Didnt работал –

+0

проверить мой ответ я каким-то образом удалось заставить его работать –

0

You может использовать Custom Walker Function, чтобы просто пропустить рендеринг пункта меню.

wp_nav_menu(array(
    'theme_location' => 'menu-2', 
    'walker'   => new custom_navigation 
)); 

class custom_navigation extends Walker_Nav_Menu { 

    function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { 

     parent::start_el($item_html, $item, $depth, $args); 

     $exclude = array(); 
     $exclude[] = get_page_by_title('my title'); 
     $exclude[] = get_page_by_title('my title 1'); 
     $exclude[] = get_page_by_title('my title2'); 

     if (! in_array($item->object_id, $exclude)) { 

      // add your menu item html to the $output variable 

     } 

    } 

} 
+0

. Этот ответ верен, и он ссылается на ценный ресурс, но для ответа в соответствии с правилами SO вы должны включить в вашем ответе относительная часть связанной страницы! –

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

1

Управляемый его с помощью метода исключения, но исключайте страницы ID:

wp_nav_menu( 
    array( 
    'theme_location' => 'menu-2', 
    'exclude' => '599, 601' 
) 
); 

(599 & 601 страничные идентификаторы)

который написан здесь:

http://bacsoftwareconsulting.com/blog/index.php/wordpress-cat/wordpress-tip-how-to-exclude-pages-from-wp_nav_menu-function/

и поиск идентификатора страницы вручную здесь:

http://bacsoftwareconsulting.com/blog/index.php/wordpress-cat/how-to-find-tag-page-post-link-category-id-in-wordpress/