如何获得一个wordpress博客页面,以显示主页上的不同导航栏

时间:2014-04-03 16:07:31

标签: php wordpress

嗨,我是一个网络开发人员,我试图让word按下使用第二个导航为我的博客部分。我有主要网站所有设置但我想要的是当我在我的顶级导航中点击博客以显示博客部分的不同导航。我尝试在header.php中使用以下代码

<?php
 if (is_single('blog')){
 wp_nav_menu(array('menu'=>'secondary' ));
 }
 ?>

但即使主题支持2次导航,此代码似乎也不起作用。

 <nav class="Seo-nav">
 <div class="Seo-nav-inner">
 <?php
echo theme_get_menu(array(
        'source' => theme_get_option('theme_menu_source'),
        'depth' => theme_get_option('theme_menu_depth'),
        'menu' => 'primary-menu',
        'class' => 'Seo-hmenu'
    )
);

get_sidebar('nav');
?>

上面的代码是我用来调用导航的代码。有没有办法让一个或多个页面显示一个菜单?对此的任何帮助都会很棒。从来没有必要让某些页面具有不同的导航,所以这对我来说是一个新的。

2 个答案:

答案 0 :(得分:0)

我想你可以两种方式来这里。

一个是仅显示第二个当前页面的孩子

function show_different_nav(){
  global $post;
  $sec_nav=wp_list_pages("child_of=".$post->ID);
 return $sec_nav;
 }

现在在模板中调用show_different_nav()。

另一种方法是编写自己的过滤器。在这种情况下我修改了http://wordpress.org/plugins/get-different-menus/

 add_filter( 'wp_nav_menu_items', 'get_different_custom_menu_item_according_to_page_slug', 10, 2 );

function get_different_custom_menu_item_according_to_page_slug ( $items, $args ) {
$current_id=(int)$GLOBALS['post']->ID;
    $current_slug=$GLOBALS['post']->slug;


$the_nmo = wp_get_nav_menu_object($current_slug); 

if ($the_nmo==""){}else{

$menu_id=$the_nmo->term_id;
$items_2 = wp_get_nav_menu_items($menu_id);
$items="";


if ($args->theme_location == 'secondary') {

    foreach ($items_2 as $item){

    $link_page_id = (int)($item->object_id);


if ($current_id == $link_page_id){$cur=" current-menu-item current_page_item";}else{$cur="";
} 

    $items .= '<li class="menu-item menu-item-type-post_type menu-item-object-page'.$cur.'"><a  href="'.$item->url.'">'.$item->title.'</a></li>';

    }
    }

}
return $items;
}

在我看来,你需要一个名称与页面slug完全相同的菜单。

答案 1 :(得分:0)

就像之前的评论中所说,你需要条件标签。特别是对你来说,is_page() conditional

<?php
if (is_page('blog')) {
   // Echo this menu on the blog slug page
      wp_nav_menu(array(
          'theme_location' => '[name_of_menu]'
      ));

} else {
  // Otherwise, echo this one
      wp_nav_menu(array(
          'theme_location' => '[name_of_main_menu]'
      ));
}

有关wp_nav_menu属性,请参阅the codex。可以用其他方式打印出菜单,这就是我推荐的菜单。

根据您的博客设置方式,is_page('blog')可能需要is_home()'blog' == get_post_type()或其他一些变体。