在管理栏上的“新建”下更改项目的顺序

时间:2017-07-13 作者:That Brazilian Guy

管理栏有一个菜单,其中包含用于添加新内容的快捷方式。

默认情况下,它显示“Post”、“Media”、“Page”和“User”。

enter image description here

我正在使用register_post_type 注册新的自定义帖子类型。我可以用它menu_position 属性更改仪表板菜单中的位置,但如何重新排序快捷链接,使其显示得更高,而不是仅在“用户”上方?

2 个回复
SO网友:cogdog

我也有类似的情况。我的自定义帖子类型在管理栏下显示为Artifact, 但我的客户希望它能排在榜首。再加上MediaUser 其实并不需要。

WordPress New menu before

我的方法是首先使用remove_node 删除除我的自定义帖子类型之外的所有帖子,然后放回我想要的add_node

add_action( \'wp_before_admin_bar_render\', \'portfolio_adminbar\' );

function portfolio_adminbar() {

    global $wp_admin_bar;

    // get node for New + menu node
    $new_content_node = $wp_admin_bar->get_node(\'new-content\');

    // change URL for node, edit for prefered link
    $new_content_node->href = admin_url( \'post-new.php?post_type=portfolio\' );

    // Update New + menu node
    $wp_admin_bar->add_node($new_content_node);

    // remove all items from New Content menu
    $wp_admin_bar->remove_node(\'new-post\');
    $wp_admin_bar->remove_node(\'new-media\');
    $wp_admin_bar->remove_node(\'new-page\');
    $wp_admin_bar->remove_node(\'new-user\');

    // add back the new Post link
    $args = array(
        \'id\'     => \'new-post\',    
        \'title\'  => \'Blog Post\', 
        \'parent\' => \'new-content\',
        \'href\'  => admin_url( \'post-new.php\' ),
        \'meta\'  => array( \'class\' => \'ab-item\' )
    );
    $wp_admin_bar->add_node( $args );

    // add back the new Page 
    $args = array(
        \'id\'     => \'new-page\',    
        \'title\'  => \'Page\', 
        \'parent\' => \'new-content\',
        \'href\'  => admin_url( \'post-new.php?post_type=page\' ),
        \'meta\'  => array( \'class\' => \'ab-item\' )
    );
    $wp_admin_bar->add_node( $args );

}
以下是我的菜单:

enter image description here

SO网友:Kudratullah

此部分通过渲染wp_admin_bar_new_content_menu (admin-bar.phpLine No. 690-746) 回调打开admin_bar_menu 操作(class-wp-admin-bar.phpLine No. 584-588).

我在这里找不到任何钩子来过滤菜单项。因此,我正在考虑删除该操作,并使用您自己的排序添加另一个操作。

使用删除此操作remove_action 然后再次附加自定义回调以添加菜单。例如:。

remove_action( \'admin_bar_menu\', \'wp_admin_bar_new_content_menu\', 70 );

add_action( \'admin_bar_menu\', \'wpse273333_admin_bar_custom_new_content_menu\', 70 );
function wpse_273333_admin_bar_custom_new_content_menu( \\WP_Admin_Bar $wp_admin_bar ){
    // add your menus
    // check wp_admin_bar_new_content_menu() function for some idea
}

结束

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu