如何在WordPress自定义插件中启用其他页面


How to enable additional page in WordPress custom plugin?

我有一个自定义的WordPress插件,它向我展示了数据库中的数据列表。我正在通过以下方式注册它的页面:

add_menu_page( 
    'Naročila', 
    'Vsa naročila', 
    'administrator', 
    'listaj-narocila', 
    array( &$this, 'listaj_narocila' )
);

然后当然,我有函数lista_narocila向我显示我的数据。
所以,目前我的网址是:

http://domain.com/wp-admin/admin.php?page=listaj-narocila

我在表格中显示数据库中的数据。现在我为每条记录提供了删除和编辑按钮,但我很难弄清楚,如何在 WordPress 中注册自定义"url"或"自定义页面",这将允许我拥有 URL:

http://domain.com/wp-admin/admin.php?page=single-narocilo?id=X

我知道我可以尝试使用add_menu_page但我不希望此页面出现在管理菜单中。只是为了作为 URL 提供。目前我没有收到访问错误。

您可以创建一个子菜单页面并将null作为其父级传递:

$parent_鼻涕虫
使用 NULL 或设置为"选项.php",如果要创建未显示在任何菜单中的页面。

演示:

add_action('admin_menu', function() 
{
    # Main page
    add_menu_page( 
        'Vsa', 
        'Vsa', 
        'add_users', // Capability, not role
        'listaj-narocila', 
        function(){ 
            printf(
                '<h2>%s</h2><a href="%s">%s</a>',
                __( 'Main page' ),
                admin_url( 'admin.php?page=single-norcilo&id='.rand(1,25) ),
                __( 'Hidden sub page' )
            );
        },
        'http://sstatic.net/stackexchange/img/favicon.ico'
    );  
    # Child page    
    $hook = add_submenu_page(
        null,
        'Norcilo',
        'Norcilo',
        'add_users',
        'single-norcilo',
        function(){ 
            printf(
                '<h2>%s</h2><a href="%s">%s</a>',
                __( 'Hidden sub page' ),
                admin_url( 'admin.php?page=listaj-narocila' ),
                __( 'back' )
            );
        }
    );
    # Enqueue script in submenu page to fix the current menu indicator
    add_action( "admin_footer-$hook", function()
    {
        echo <<<HTML
<script type="text/javascript">
jQuery(document).ready( function($) {
    $('#toplevel_page_listaj-narocila')
        .removeClass('wp-not-current-submenu')
        .addClass('current');
});     
</script>
HTML;
    });
});

另一种方法:https://wordpress.stackexchange.com/a/114818/12615