WordPress插件页面正在加载到管理内容容器中,而不是单独的页面

时间:2014-01-09 作者:user1632018

我正在创建一个wordpress插件,它有自己的UI。它看起来像一个标准的web应用程序,因此插件中所做的一切都在这个UI中处理,而不是将其与WP管理区域集成。我的问题似乎是,我无法将其作为单独的页面加载,我只能将其加载到在管理区域创建的页面中,该页面的UI嵌入到内容块中。当我将其添加到菜单时,如下所示:

// Add plugin UI submenu item
add_submenu_page(
    \'myPlugin\', \'myPlugin WP\', __(\'myPlugin UI\', \'myPlugin\'),
    $capability, \'myPlugin-ui\', \'myPlugin_router\'
);
并让其以这样的方式访问页面:

    function myPlugin_router() {

        // Get current screen details
        $screen = get_current_screen();

    if(strpos($screen->base, \'myPlugin-ui\') !== false) {
            include(DS_ROOT_PATH.\'/views/myPlugin-ui.php\');

    }
}
这是因为我使用“include”来添加它,所以它是作为模板加载的吗?

我还计划像wordpress admin那样使用这个UI,并在UI的内容区域内加载单独的页面,就像WP对我的UI所做的那样。所以它使用模板。我会使用上面的include这样做吗?

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

在开始之前,我会说我认为这是一个非常糟糕的主意,但您可以通过挂接在初始化之后但在任何输出发生之前发生的操作来绕过管理UI:

function my_admin_ui(){
    if( isset( $_GET[\'page\'] )
        && \'myPlugin-ui\' == $_GET[\'page\'] ){
            include( plugin_dir_path( __FILE__ ) . \'views/myPlugin-ui.php\' );
            exit;
    }
}
add_action( \'admin_init\', \'my_admin_ui\', 999 );

结束