使用挂钩更改管理菜单位置

时间:2013-07-01 作者:Abdul Awal

我一直在wordpress多站点安装中工作。我使用的upPrev插件在外观->>upPrev下有一个选项页

现在我需要的是在设置->>upPrev下移动此菜单,而不编辑核心插件文件。以下是用于在upPrev中注册菜单的代码。php:

          add_action( \'admin_menu\',                 \'iworks_upprev_add_pages\' );

    function iworks_upprev_add_pages()
    {
    $dir = explode(\'/\', dirname(__FILE__));
    $dir = $dir[ count( $dir ) - 1 ];
    if (current_user_can( \'manage_options\' ) && function_exists(\'add_theme_page\') ) {
        add_theme_page(
            __(\'upPrev\', \'upprev\'),
            __(\'upPrev\', \'upprev\'),
            \'manage_options\',
            $dir.\'/admin/index.php\'
        );
    }
}
我已尝试使用以下代码更新菜单:

  add_action( \'admin_menu\', \'my_remove_tp\', 999 );

function my_remove_tp() {
    remove_submenu_page( \'themes.php\', \'upprev/admin/index.php\' );
}


add_action(\'admin_menu\', \'upprev_menu\');
function upprev_menu(){
        //add_options_page(\'upPrev Menu\', \'upPrev\', \'manage_options\', \'upprev/admin/index.php\', \'upprev\');  
        if (current_user_can( \'manage_options\' ) && function_exists(\'add_options_page\') ) {
    add_options_page(
        __(\'upPrev\', \'upprev\'),
        __(\'upPrev\', \'upprev\'),
        \'edit_page\', \'options-general.php?page=upprev/admin/index.php\');
    }
}
结果:菜单显示在“设置”下,但会导致一个空白页。。。你知道怎么修复吗??

1 个回复
最合适的回答,由SO网友:Abdul Awal 整理而成

我已经修好了。。。在此处发布解决方案,如果它有助于某人。。。以下是修复我的问题的最终代码:

/** Remove the Menu registered by Plugin **/
    add_action( \'admin_menu\', \'my_remove_tp\', 999 );

function my_remove_tp() {
    remove_submenu_page( \'themes.php\', \'upprev/admin/index.php\' );
}

/** Re-Register the menu from here **/ add_action(\'admin_menu\', \'upprev_menu2\');

function upprev_menu2(){ add_options_page(\'upPrev Menu\', \'upPrev\', \'manage_options\', \'upprev/admin/index.php\', \'\');
}

结束