如何让我的自定义帖子类型出现在NAV-menus.php‘Menu’中?

时间:2011-05-05 作者:Toshihiro

我的自定义帖子类型有点问题。我可以在我的主题中很好地创建它们,但我无法让它们显示在“菜单”屏幕中。。。至少在默认情况下不是这样。

我曾尝试在代码中添加菜单和UI标志(见下文),但没有成功。

有趣的是,当我启用自定义帖子类型UI插件时,自定义帖子类型在“菜单”屏幕中显示良好(有时)。这似乎向我暗示,我在某个地方遗漏了一个步骤,而且不知何故,自定义帖子类型UI插件设置了该标志,并允许我的自定义帖子类型和分类显示在导航菜单中。php“菜单”屏幕。

编辑::以上位已回答。谢谢你,米洛。我应该在“屏幕选项”选项卡中打开它们。

请注意,有没有一种方法可以在不使用分类法的情况下将自定义帖子类型作为菜单项提供?我会尽力解释的。在本例中,我创建了一个公文包帖子类型。

a、 当它出现在导航菜单中时。php,我可以选择要添加到菜单中的各个页面。这并不理想。

b、 或者,我可以将公文包页面分配给一个类别(我们称之为小部件),并且分配给小部件的所有页面都显示在归档页面上。这引发了另一个问题,我是否可以强制将每个新的公文包页面分配到至少一个默认类别,就像WP中的“Posts”行为一样?这个解决方案在大多数情况下都有效,直到有人忘记将类别分配给新的公文包页面。。。

c、 第三个选项是使用重写slug,只需创建一个自定义菜单项,指向(在本例中为)“/portfolio/”。这对我的permalinks很好用。然而,WordPress没有添加\'。当前过帐项目\',或\'。当前菜单父级“或”。查看公文包页面时,将当前父级的“类”发布到此菜单项,这意味着在查看公文包页面时,我无法使用CSS突出显示“公文包”菜单项,就像我可以与网站上的所有其他页面/子页面和帖子一样。虽然这不是一个太大的问题,但它确实意味着网站访问者的UI体验不太一致。

这是我注册自定义帖子类型的代码。正如您所看到的,我已经添加了大量的“show\\u in\\u…”旗帜,但没有用。我尝试过删除这些标志,一次添加一个,然后进行测试(每次都使用干净的数据库),但没有效果。正如我在上文中指出的,自定义帖子类型UI插件似乎启用了这种行为(大多数情况下),这似乎表明我错过了注册码之外的一个步骤。

提前谢谢你。

add_action( \'init\', \'toshihiro_register_portfolio_content_type\');
function toshihiro_register_portfolio_content_type(){
    register_post_type(\'tosh_portfolio\',
    array(
         \'labels\' => array (
             \'name\' => \'Portfolio Pages\',
             \'singular_name\' => \'Portfolio Page\',
             \'menu_name\' => \'Portfolios\',
             \'add_new\' => \'Create Portfolio Page\',
             \'add_new_item\' => \'Create New Portfolio Page\',
             \'edit\' => \'Edit Portfolio Page\',
             \'edit_item\' => \'Edit Portfolio Page\',
             \'new_item\' => \'New Portfolio Page\',
             \'view\' => \'View Portfolio Page\',
             \'view_item\' => \'View Portfolio Page\',
             \'search_items\' => \'Search Portfolio Pages\',
             \'not_found\' => \'No Portfolio Pages Found\',
             \'not_found_in_trash\' => \'No Portfolio Pages found in Trash\',
         ),
        \'description\' => \'Portfolio or product or project pages\',
        \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'revisions\', \'thumbnail\'),
        \'public\' => true,
        \'show_ui\' => true,
        \'show_in_menu\' => true,
        \'show_in_nav_menus\' => true,
        \'query_var\' => true,
        \'has_archive\' => true,
        \'hierarchical\' => false,
        \'can_export\' => true,
        \'menu_icon\' => trailingslashit(TOSH_IMAGES_URI) . \'toshihiro_icon.png\',
        \'menu_position\' => 33,
        \'rewrite\' => array(\'slug\' => \'portfolio\'),
    )
);
register_taxonomy(\'tosh_cat_port\',array (0 => \'tosh_portfolio\',),array( \'hierarchical\' => true,
                                                            \'label\' => \'Portfolio Categories\',
                                                            \'singular_label\' => \'Portfolio Category\',
                                                            \'show_ui\' => true,
                                                            \'query_var\' => true,
                                                            \'show_in_nav_menus\' => true,
                                                            \'rewrite\' => array(\'slug\' => \'portfolio_cat\'),
                                                             ) );
register_taxonomy(\'tosh_tag_port\',array (0 => \'tosh_portfolio\',),array( \'hierarchical\' => false,
                                                            \'label\' => \'Portfolio Tags\',
                                                            \'singular_label\' => \'Portfolio Tag\',
                                                            \'show_ui\' => true,
                                                            \'show_in_nav_menus\' => true,
                                                            \'query_var\' => true,
                                                            \'rewrite\' => array(\'slug\' => \'portfolio_tags\'),
                                                             ) );
}

2 个回复
SO网友:user100847

请确保在外观->菜单中,转到顶部的屏幕选项,并确保勾选CPT UI,它将出现。

SO网友:Brian Fegter

通过编辑当前用户选项“metaboxhidden\\u nav-menus”,可以强制自定义帖子类型保持打开状态:

function display_post_type_nav_box(){

    $hidden_nav_boxes = get_user_option( \'metaboxhidden_nav-menus\' );

    $post_type = \'foobar\'; //Can also be a taxonomy slug
    $post_type_nav_box = \'add-\'.$post_type;

    if(in_array($post_type_nav_box, $hidden_nav_boxes)):
        foreach ($hidden_nav_boxes as $i => $nav_box):
            if($nav_box == $post_type_nav_box)
                unset($hidden_nav_boxes[$i]);
        endforeach;
        update_user_option(get_current_user_id(), \'metaboxhidden_nav-menus\', $hidden_nav_boxes);
    endif;
}
add_action(\'admin_init\', \'display_post_type_nav_box\');

结束

相关推荐

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