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


9

我无法弄清楚。似乎没有复选框或功能类似的东西将新创建的自定义帖子类型存档页面添加到菜单中。

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

我只在Nav菜单中找到了这个名为Custom Post Type Archives的插件,它实际上并没有做任何事情,而是向菜单添加了自定义链接。它不会激活或不是很动态。

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


在提出了斯蒂芬的答案后,我最终提出了以下解决方案:wordpress.org/support/topic/…希望它对将来
有所

Answers:


1

我认为这是一种可行的方法(尽管未经测试)。

//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的新成员(假设正在使用自定义永久链接...。)


感谢您的回答。这似乎基本上是可行的。但是,URL的格式需要进行一些调整。我希望您可能比我更了解WP。因此,当前的网址是:example.com/?post_type = myposttype,但应为example.com/myposttype。也许只是$url = site_url() . 'myposttype';?并且不包括这些类,包括当前活动的类。
Kalle H.Väravas2011年

哦,很抱歉,没有看到$class = '';。但是,我不能动态获取普通类,也不能使当前活动的链接正常工作吗?
Kalle H.Väravas2011年

哦,对不起,没看到$wp_query->query_vars['post_type']=='myposttype'。基本工作。毫无疑问,这是获得更多动态解决方案的良好基础,谢谢!
Kalle H.Väravas11年

2

从WordPress 4.4开始(2015年12月),WordPress核心现已正式支持自定义帖子类型档案链接,而无需任何第三方代码或插件。

您可以阅读整个Trac#16075票证进行全面讨论,或阅读Make WordPress Core帖子以获取其他标签摘要

要启用新的内置归档菜单环节的支持,自定义文章类型必须与非falsey(即真)值注册has_archivepublicly_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',
            ),
        )
    );
});

通过这些添加,您将在“ 外观”>“菜单”管理屏幕上看到一个新的元框。

帖子类型档案链接可以在帖子类型元框的“查看全部”标签下找到:

WordPress自定义帖子类型存档导航菜单链接

注意:您可能需要切换“屏幕选项”抽屉,并确保选中“帖子类型档案”名称(例如电影),以便其出现在“菜单”屏幕上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.