add_menu_page with no link

时间:2014-12-08 作者:Jeff Vdovjak

我想在WordPress中创建一个管理菜单,当您单击它时,它不会转到页面。菜单如下所示。

Members <-- Top Level
View Members
Add Members
顶级菜单“Members”不会链接到任何地方。它只保存其他菜单项。

原因是,不同的用户将具有不同的功能。有些人可以添加成员,但不能查看,反之亦然。

谢谢你的帮助!我一直把头撞在墙上。

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

您可以使用add_menu_page() 自己添加链接。简单使用# 作为菜单段塞。然后您可以使用add_submenu_page() 您可以自己添加其他菜单项。

另一种选择是摆弄全球$menu 大堆拿this answer 作为基础。

编辑:根据评论,需要一个顶部(&a);子菜单项

以下演示(mu-)插件显示了如何添加和删除菜单项,从而自定义重建菜单项。“魔法”是使用全球submenu, 在里面循环_wp_menu_output() 在里面~/wp-admin/menu-header.php. 正好在此函数之前运行的筛选器是parent_file 滤器使用它来拦截和更改全局。这样,您可以使用remove_submenu_page(), 当单击主菜单项时,子菜单项的默认核心行为仍然可见。

(注:自定义menu_icon 可在后期类型注册期间进行设置。)

<?php
/** Plugin Name: (#170620) Menu Pages tests */

// Rebuild the Menu
add_action( \'admin_menu\', function()
{
    $slug = \'edit.php?post_type=members\';
    remove_submenu_page( $slug, $slug );
} );

// Set the Main menu items anchor back to the list page
add_filter( \'parent_file\', function( $parent_file )
{
    $slug = \'edit.php?post_type=members\';
    $GLOBALS[\'submenu\'][ $slug ][10][2] = $slug;

    return $parent_file;
} );

// Register the "members" post type
add_action( \'wp_loaded\', function()
{
    register_post_type( \'members\', [
        \'public\'    => true,
        \'menu_icon\' => \'dashicons-universal-access\',
        \'labels\'    => [
            \'name\'               => \'Members\',
            \'singular_name\'      => \'Member\',
            \'add_new\'            => \'Add New\',
            \'add_new_item\'       => \'Add New Member\',
            \'edit_item\'          => \'Edit Member\',
            \'new_item\'           => \'New Member\',
            \'view_item\'          => \'View Member\',
            \'search_items\'       => \'Search Members\',
            \'not_found\'          => \'No members found.\',
            \'not_found_in_trash\' => \'No members found in Trash.\',
            \'parent_item_colon\'  => null,
            \'all_items\'          => \'All Members\',
        ],
    ] );
} );

SO网友:Jeff Vdovjak

我根据this question.

只是使用一些简单的CSS。使用WordPress分配给菜单项的类,我可以使用CSS来防止单击。只需将样式排队(或将其添加到其他工作表)。wordpress分配给顶部菜单项的类为:

"toplevel_page_"+slug
CSS如下所示:

a.toplevel_page_members{ pointer-events: none; }
其中“members”是菜单slug。

然后,我可以使用与add\\u menu\\u页面具有相同slug的add\\u submenu\\u页面,并更改功能!

结束

相关推荐