如何为一个插件制作多个管理页面?

时间:2017-06-21 作者:Bargain23

我正在尝试在我的插件中实现一个简单的登录this tutorial. 我已经成功地在WP管理页面中实现了登录,但我似乎无法将其重定向到index.php. 而且index.php 必须仍包含在管理页中。以下是我的部分代码:

session_start();
add_action(\'admin_menu\', \'sample_setup_menu\');

function sample_setup_menu(){
    add_menu_page(\'sample Foo\', \'sample Foo\', \'manage_options\', \'sample-plugin\', \'login_init\');
} 

function login_init(){
    /* Check Login form submitted */    


    //$_POST[\'Submit\']
    if(isset($_POST[\'Submit\'])){
        /* Define username and associated password array */
        $logins = array(\'Alex\' => \'123456\',\'username1\' => \'password1\',\'username2\' => \'password2\');

        /* Check and assign submitted Username and Password to new variable */
        //$Username = isset($_POST[\'Username\']) ? $_POST[\'Username\'] : \'\';
        $Username = isset($_GET[\'page\']) ? $_GET[\'page\'] : \'\';
        $Password = isset($_POST[\'Password\']) ? $_POST[\'Password\'] : \'\';

        /* Check Username and Password existence in defined array */        
        if (isset($logins[$Username]) && $logins[$Username] == $Password){
            $_SESSION[\'UserData\'][\'Username\']=$logins[$Username];
            header("location: index.php");
            exit;
        } else {
            /*Unsuccessful attempt: Set error message */
            $msg="<span style=\'color:red\'>Invalid Login Details</span>";
        }
    }
    require_once(\'login.php\');
}

2 个回复
SO网友:Prashant Walke

使用add\\u submenu\\u page功能WordPress可以添加多个页面/菜单

为了向WordPress管理仪表板添加新的顶级菜单,您可以使用add_menu_page() 作用此函数具有以下语法。

//add plugin menu

     add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position);
如您所见,该函数接受以下参数。

page_title: 页面标题。

menu_title: 仪表板上显示的菜单标题。

capability: 查看菜单的最低功能。

menu_slug: 用作菜单项的slug的唯一名称。

function: 用于显示页面内容的回调函数。

icon_url: 用作图标的自定义图像的URL。

position: 菜单顺序中的位置。

Adding a Submenu

有两种类型的子菜单,顶级菜单下面列出的菜单项和WordPress中现有默认菜单下面列出的菜单项。要在顶级菜单下添加子菜单,可以使用add\\u submenu\\u page()函数。此函数具有以下语法。

//add submenu
add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);
如您所见,此函数接受以下参数。

parent_slug: 父菜单项的Slug。

page_title: 页面标题。

menu_title: 仪表板上显示的子菜单标题。

capability: 查看子菜单的最低能力。

menu_slug: 用作子菜单项的slug的唯一名称。

function: 用于显示页面内容的回调函数。

例如:

add_action(\'admin_menu\', \'my_menu_pages\');
function my_menu_pages(){
    add_menu_page(\'My Page Title\', \'My Menu Title\', \'manage_options\', \'my-menu\', \'my_menu_output\' );
    add_submenu_page(\'my-menu\', \'Submenu Page Title\', \'Whatever You Want\', \'manage_options\', \'my-menu\' );
    add_submenu_page(\'my-menu\', \'Submenu Page Title2\', \'Whatever You Want2\', \'manage_options\', \'my-menu2\' );
}

SO网友:Pravin Work

尝试添加子菜单页

add_submenu_page( \'sample-plugin\', \'Sample Page\', \'title\', \'administrator\', \'slug-fo-page\', \'slug-for-page\' );

结束

相关推荐

生成的自定义Metabox的PHP输出

我使用WordPress Meta Box Generator v2 Beta网站生成了一个自定义的Meta Box,将自定义图像文件上传到自定义帖子中,在管理端,一切似乎都很好,但我不知道如何在前端进行输出。所以我尝试了<?php echo get_post_meta( get_the_id(), \'project_logo_logo-image\', true ); ?> 但似乎什么都不起作用,也没有任何产出。请你给我指一下正确的方向好吗? class Rational_Meta_