如何将正确的URL放入子菜单插件?

时间:2016-05-13 作者:Marcos

我正在尝试构建我的第一个插件,并构建我的插件菜单,如下所示:

function group_panel(){
    include(\'html/example.html\');   
    echo "<h1>{$_POST[\'data\']}";
}

function groups_add_menu(){
    if (function_exists(\'add_menu_page\')){
        add_menu_page(\'Group\',\'Group\',8,basename(__FILE__),\'group_panel\',plugins_url(\'/img/icon.png\',__FILE__));
        add_submenu_page(basename(__FILE__),\'Example\',\'Example\',8,\'red.php\');       
    }
}
我的文件夹是这样的

我有文件red.php 的内部/plugins/my-plugin/red.php 但如果我在“示例”菜单中按,WordPress会将我的发送到索引,但第一个选项(“组”)有效。

如何放置我菜单的URL?

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

您不能以这种方式加载外部文件。此参数用于菜单slug。如果你加载外部文件,它是无用的,除了你要在文件中打印的内容之外,什么都没有,也没有WordPress功能(因为WordPress没有加载)。

您可以为此定义回调函数,然后包括red.php 在该功能中。

首先,在主文件(定义插件头的地方)中为插件路径定义一个常量,以便您以后也可以使用它。

define( \'MY_PLUGIN_PATH\', plugin_dir_path( __FILE__ ) );
然后添加带有slug和回调函数的子菜单页

add_submenu_page(basename(__FILE__),\'Example\',\'Example\', \'manage_options\', \'my-plugin-page-slug\', \'include_plugin_file\');
NOTE- 用户级别(从1到10)是不推荐使用的功能。看见Roles and Capabilities

然后在回调函数中使用path常量并包含文件

function include_plugin_file() {
    include_once MY_PLUGIN_PATH . \'red.php\';
}

相关推荐

Order Admin sub-menu items?

我正在使用向CPT管理菜单添加项目add_submenu_page 这很好,但它们被添加到CPT选项后的子菜单底部。我希望能够将它们放在最上面,但我想这个问题也可以应用于订购所有基于管理员的子菜单项。我所尝试的(不起作用,我尝试了几种变体),function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( \'edi