Get post type in header.php

时间:2013-08-01 作者:Kuldeep Daftary

我正在wordpress中创建菜单,我想添加class="active" 在其页面处于活动状态时进行链接。我没有使用内置的wordpress菜单功能。

我正在把菜单硬编码在标题中。php,因为此菜单链接到自定义posttype归档页面。所以如果有人在里面,我想保持课堂活跃singlearchive 该posttype的页面。

以下是我想做的:

header.php

<?php if ($post_type == "custom_post_type1") : ?>
<li><a href="link_to_post_type1_story" class="active">Post type 1</a><li>
<?php else: ?>
<li><a href="link_to_post_type1_story">Post type 1</a><li>
<?php endif; ?>

<?php if ($post_type == "custom_post_type2") : ?>
<li><a href="link_to_post_type2_story" class="active">Post type 2</a><li>
<?php else: ?>
<li><a href="link_to_post_type2_story">Post type 2</a><li>
<?php endif; ?>
我希望我能很好地解释我在寻找什么。

谢谢

3 个回复
SO网友:reikyoushin

您可以使用get_queried_object, 像get_post_type 不适用于自定义帖子类型(我还不知道为什么,更多信息here)

 $obj = get_queried_object();
 $custom_post_type = $obj->post_type;
然后您可以继续

 if($custom_post_type == "type1"){
    // do something
 } else {
    // etc..
 }
我已经在我正在开发的一个网站上对此进行了测试,我希望它也能在你的网站上运行。。

编辑:

以下是您也可以用于存档的新代码:

global $wp_query;

if (is_archive()):  
    $custom_post_type = get_query_var(\'post_type\');
    $custom_taxonomy = get_query_var(\'taxonomy\');
else:
    $obj = get_queried_object();
    $custom_post_type = $obj->post_type;
endif;
我还添加了一个分类类型,以防您自己需要。

SO网友:Gioia Fueter

即使链接到自定义类型存档,您仍然可以使用内置菜单。。。您只需插入一个带有自定义存档页面URL的自定义链接(在菜单创建页面的左侧,单击“链接”。这样您就不必担心手动创建类,菜单将更易于维护:)

SO网友:Lorenzo

您可以使用该功能get_post_type

<? get_post_type( $post ) ?>
在哪里$post 是要检查的帖子的ID或对象。

结束

相关推荐