【问题标题】:How to enable additional page in WordPress custom plugin?如何在 WordPress 自定义插件中启用附加页面?
【发布时间】:2013-09-26 20:33:49
【问题描述】:

我有一个自定义 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=<b>single-narocilo?id=X</b>

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

【问题讨论】:

    标签: php wordpress plugins


    【解决方案1】:

    您可以创建一个子菜单页面和pass null as its parent

    $parent_slug
    如果要创建一个不出现在任何菜单中的页面,请使用 NULL 或设置为 'options.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2012-10-02
      • 1970-01-01
      相关资源
      最近更新 更多