将菜单添加到wordpress中的自定义帖子类型子页面

时间:2014-11-26 01:51:45

标签: wordpress custom-post-type

我已将自定义菜单添加到我的header.php(wordpress 4.0)中的特定页面,并在该页面上正确显示:http://www.studiobenna.com/jf/?page_id=8

以下是代码:

<?php if(is_page( 8 )){ /*Add SubMenu Code to Watch Page */?>
        <?php wp_nav_menu( array( 'theme_location' => 'watch-menu' ) ); ?>
        <div class="clear"></div>
    <?php } ?>

此页面显示自定义帖子类型(视频)。现在我想将这个相同的菜单添加到该自定义帖子类型的任何子页面中,例如:

http://www.studiobenna.com/jf/?video=trailive-season-1-episode-3

http://www.studiobenna.com/jf/?video=tiny-pass-test-2

http://www.studiobenna.com/jf/?video=the-long-haul-john-muir-trail

我试过了:

<?php if ( is_post_type_archive('video') ) { ?>
    <?php wp_nav_menu( array( 'theme_location' => 'watch-menu' ) ); ?>
<?php } ?>

没有成功。关于如何使其发挥作用的任何想法?

谢谢,

马特

3 个答案:

答案 0 :(得分:1)

要检查是否正在显示单个帖子,请使用is_singular()

if( is_singular( 'video' ) ) {
  // do stuff
}

答案 1 :(得分:0)

如果在每个视频帖子中,网址包含“视频”字样,您可以通过检查每个帖子是否在网址中显示“视频”来完成此操作。

  // getting the part after the domain and looking if there is the word video inside id     
 <?php if(strpos($_SERVER["REQUEST_URI"], 'video') !== FALSE) ?> 
 //you can be more specific with the "video" part because if for some reason there is non video post that also have the word "video" the menu will be still displayed  
  <?php wp_nav_menu( array( 'theme_location' => 'watch-menu' ) ); ?>
    <div class="clear"></div>
<?php } ?>

另一种方法是使用JavaScript完成此任务,您只需要搜索视频ID,如果存在,则打印菜单。

懒惰的方法是在wp_head()之后添加javascript;在header.php中 或http://codex.wordpress.org/Function_Reference/wp_enqueue_script

希望这有帮助。

答案 2 :(得分:0)

感谢diggy,我想出了这个:

<?php if(is_page( 8 ) || is_singular( 'video') || is_tax( array( 'video-type', 'videotags', 'video-sport', 'videocat'))){   /*Add SubMenu Code to all Video Post Related Pages */?>
        <?php wp_nav_menu( array( 'theme_location' => 'watch-menu' ) ); ?>
        <div class="clear"></div>
    <?php } ?>