只有加载了我的插件,我才能修改管理员栏

时间:2014-07-04 作者:MattK

如果我想总是更改页面顶部的管理工具栏,那很容易。

add_action(\'admin_bar_menu\', \'add_toolbar_items\', 100);
function add_toolbar_items($admin_bar){
  $admin_bar->add_menu( array(
    \'id\'    => \'my-item\',
    \'title\' => \'My Item\',
    \'href\'  => \'#\',
    \'meta\'  => array(
        \'title\' => __(\'My Item\'),            
    ),
  ));
}
没问题。我想在页面顶部添加一些东西,但只有当我们在我的插件页面上时。

所以我想这样做:

add_action(\'admin_menu\', \'my_plugin_menu\');
function my_plugin_menu(){
  //We add the hook for our menu item on the main menu
  $main = add_menu_page( \'My Swell Plugin\', \'My Swell Plugin\', \'edit_posts\', \'blah\', \'generate_main_page\',,__FILE__));
}
function generate_main_page(){
  //We are definitely in our plugins page now - let\'s modify the admin toolbar.
  add_action(\'admin_bar_menu\', \'add_toolbar_items\', 100);
  require_once(\'mainwindow.php\');
}

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

在添加新菜单项之前,您需要记住页面的屏幕id并检查当前屏幕id:

add_action( \'admin_menu\', \'my_plugin_menu\' );
function my_plugin_menu() {
    global $my_swell_plugin_page;
    $my_swell_plugin_page = add_menu_page( \'My Swell Plugin\', \'My Swell Plugin\', \'edit_posts\', \'blah\', \'generate_main_page\' );
}

function generate_main_page() {
    //We are definitely in our plugins page now - let\'s modify the admin toolbar.
}

add_action( \'admin_bar_menu\', \'add_toolbar_items\', 100 );
function add_toolbar_items( $admin_bar ) {
    global $my_swell_plugin_page;

    if ( $my_swell_plugin_page == get_current_screen()->id ) {
        $admin_bar->add_menu( array(
            \'id\' => \'my-item\',
            \'title\' => \'My Item\',
            \'href\' => \'#\',
            \'meta\' => array(
                \'title\' => __( \'My Item\' ),
            ),
        ) );
    }
}

SO网友:crissoca

也许$current_screen 对象可以帮助您:

global $current_screen;
if ( $current_screen->base == \'toplevel_page_blah\' ){
    add_action(\'admin_bar_menu\', \'add_toolbar_items\', 100);
}
我还没有测试过,但应该可以。

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php