在WP管理中更改自定义子菜单链接的顺序?

时间:2019-01-02 作者:Brett

我在“用户”菜单下添加了一个指向WP Admin的自定义链接,但问题是我似乎无法将其显示在默认选项上方。这可能吗?

My code:

// Add sub-menu option to users menu to contractors section (shortcut)
add_action(\'admin_menu\', \'my_add_contractors_submenu\', 5);

function my_add_contractors_submenu() {
    global $submenu;
    $permalink = admin_url(\'users.php?role=contractor\');
    $submenu[\'users.php\'][] = array( \'Contractors\', \'manage_options\', $permalink );
}
请注意,我使用了此方法,而不是add_submenu_page 因为我需要自己添加链接。

我试过和priority 中的参数add_action 但它不会再高了——我正试图让它显示为第二个选项,就在“所有用户”下。

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

看看这个函数。

function my_submenu_order($menu_ord) {
    global $submenu;

    // echo \'<pre>\'.print_r($submenu,true).\'</pre>\';

    $arr = array();
    $arr[] = $submenu[\'users.php\'][15]; // Your Profile
    $arr[] = $submenu[\'users.php\'][10]; // Add New
    $arr[] = $submenu[\'users.php\'][5]; // All Users
    $submenu[\'users.php\'] = $arr;

    return $menu_ord;
}

add_filter(\'custom_menu_order\', \'my_submenu_order\');
将其添加到您的函数中。php。它将用户子菜单的默认顺序从[5][10][15]更改。

现在取消对回声的注释,并注释掉所有其他内容。这将输出所有内容的菜单项位置。查找新的子菜单并将其添加到列表中。所以应该是这样的。

function my_submenu_order($menu_ord) {
    global $submenu;

    // echo \'<pre>\'.print_r($submenu,true).\'</pre>\';

    $arr = array();
    $arr[] = $submenu[\'users.php\'][15];
    $arr[] = $submenu[\'users.php\'][##]; // Add New Number
    $arr[] = $submenu[\'users.php\'][10];
    $arr[] = $submenu[\'users.php\'][5];
    $submenu[\'users.php\'] = $arr;

    return $menu_ord;
}

add_filter(\'custom_menu_order\', \'my_submenu_order\');
<小时>

EDIT

上面的代码可以很好地工作,但是如果您以后要添加一个插件,将链接添加到用户子菜单,它们将不会显示,因为我们正在删除原始菜单,而不包括新的链接(因为我们不知道它们是什么)。

如果这是一个问题,我们可以将新排序的项目添加到末尾并删除原始项目,而不是删除菜单。见下文。

function my_submenu_order($menu_ord) {
    global $submenu;

    // echo \'<pre>\'.print_r($submenu,true).\'</pre>\';

    // Build array of newly sorted items
    $arr = array();
    $arr[] = $submenu[\'users.php\'][15]; // Your Profile
    $arr[] = $submenu[\'users.php\'][10]; // Add New
    $arr[] = $submenu[\'users.php\'][5]; // All Users

    // Remove the originals
    unset($submenu[\'users.php\'][15]);
    unset($submenu[\'users.php\'][10]);
    unset($submenu[\'users.php\'][5]);

    // Add newly items to the list
    $submenu[\'users.php\'] += $arr;

    return $menu_ord;
}

add_filter(\'custom_menu_order\', \'my_submenu_order\');

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果