如何添加自定义帖子类型档案页面链接到导航菜单?

时间:2011-12-05 作者:Kalle H. Väravas

我想不出来。似乎没有复选框或任何类似的功能来将新创建的自定义帖子类型存档页面添加到菜单中。

如果您在页面上,该链接也必须处于活动状态。这可能是不可能的,但是否有一些插件?看在我的份上,我找不到它:(

我只发现这个插件名为Custom Post Type Archives in Nav Menus, 这实际上没有任何作用,但可以向菜单添加自定义链接。。使用完整的网站url。它不活动或不是很动态。

我想,最简单的方法可能是wp_nav_menu() 手动添加我的链接,然后使用$_GET 控制“当前活动链接”的信息。

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

这是一种我认为应该有效的方法(尽管尚未测试)。

//Hook on to the filter for the (custom) main menu
// \'wp_list_pages\' filter is a fallback, when a custom menu isn\'t being used 
add_filter( \'wp_list_pages\', \'new_nav_menu_items\' );
add_filter( \'wp_nav_menu_items\', \'new_nav_menu_items\' );
//Can also hook into a specific menu...
//add_filter( \'wp_nav_menu_{$menu->slug}_items\', \'new_nav_menu_items\' );

function new_nav_menu_items($items) {
    global $wp_query;
    $class =\'\';

    //Checks if we are viewing CPT \'myposttype\', if so give it the \'active\' class.
    if(isset($wp_query->query_vars[\'post_type\'])&& $wp_query->query_vars[\'post_type\']==\'myposttype\') 
        $class = \'current_page_item\';

    //This generates the url of the CPT archive page
    $url = add_query_arg(\'post_type\',\'myposttype\',site_url());

    $myitem = \'<li class="\'.$class.\'"><a href="\'.$url.\'">My Custom Post Type</a></li>\';

    $items = $items . $myitem;
    return $items;
}
在我看来,这似乎不是最干净的解决方案,但我不知道还有什么其他方法。如果有,我想看看!

最后,自定义项链接到的链接url不是“漂亮的”-但如果您新添加了CPT的slug,则可以做到这一点(假设正在使用自定义永久链接…)

SO网友:rjb

自WordPress 4.4(2015年12月)起,自定义帖子类型存档链接现在officially supported in WordPress core 无需任何第三方代码或插件。

您可以阅读整个Trac #16075 完整讨论的门票或summary of the additional labels.

要启用对存档菜单链接的新内置支持,自定义帖子类型必须使用非虚假(即true)值注册has_archive, publicly_queryableshow_in_nav_menus:

add_action( \'init\', function () {
    register_post_type( \'movies\',
        array(
            \'labels\' => array(
                \'name\' => __( \'Movies\' ),
                \'singular_name\' => __( \'Movie\' ),
                \'archives\' => __( \'Movies\' ),
            ),
            \'public\' => true,
            \'has_archive\' => true,
            \'rewrite\' => array(
                \'slug\' => \'movies\',
            ),
        )
    );
});
通过这些添加,您将在Appearance > Menus 管理屏幕。

可以在帖子类型元框中的“查看全部”选项卡下找到帖子类型存档链接:

WordPress Custom Post Type Archive Nav Menus Link

注意:您可能需要切换“屏幕选项”抽屉,并确保选中您的“Post Type Archives”名称(例如电影),以便它出现在菜单屏幕上

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph