在 WordPress 管理仪表板上的 WooCommerce 中删除 'Add Order' 的子菜单
Remove submenu for 'Add Order' in WooCommerce on WordPress admin dashboard
我的 WooCommerce 版本是 4.5.2。
我想删除自定义用户的“添加订单”,这样它就无法访问wp-admin/post-new.php?post_type=shop_order
。
我使用用户角色编辑器创建了一个具有以下权限的自定义用户:
这样,用户只能查看现有订单,点击订单预览更新到'Completed'。
我试过用这个:
remove_submenu_page( 'edit.php?post_type=shop_order', 'post-new.php?post_type=shop_order');
...但是无法访问订单主菜单。
我发现了这个 post ,它使用 CSS.
从页面中隐藏了 'Add order'
我希望有人能为我指出如何实现我正在寻找的目标的方向。
更新:
根据 7uc1f3r 的回答,这是我的输出
[edit.php?post_type=shop_order] => Array
(
[5] => Array
(
[0] => Orders
[1] => edit_shop_orders
[2] => edit.php?post_type=shop_order
)
[10] => Array
(
[0] => Add order
[1] => edit_shop_orders
[2] => post-new.php?post_type=shop_order
)
)
使用提供的解决方案,我使用它以便自定义用户无法添加订单和访问 wp-admin/post-new.php?post_type=shop_order:
unset( $submenu['edit.php?post_type=shop_order'][10][0] );
unset( $submenu['edit.php?post_type=shop_order'][10][1] );
unset( $submenu['edit.php?post_type=shop_order'][10][2] );
此外,我应用CSS在管理面板隐藏'Add order':
ul.wp-submenu.wp-submenu-wrap {
display: none !important;
}
现在看起来像这样:
我正在使用 WC 4.4.1
和 WC 4.6.0
,在这两个版本中都无法从菜单中创建新订单。
更新:根据您发布的输出,这应该足以删除“订单:添加新”
function action_admin_menu() {
global $menu, $submenu;
// Unset 'Order: add new'
unset( $submenu['edit.php?post_type=shop_order'][10] );
}
add_action( 'admin_menu', 'action_admin_menu' );
可选:对于“产品:新增”和调试,您可以使用
// DEBUG: This displays the complete wordpress admin menu on your dashboard for admin only. (Remove afterwards)
function debug_admin_menus() {
global $menu, $submenu, $pagenow;
if ( current_user_can('manage_options') ) {
if( $pagenow == 'index.php' ) { // print on dashboard
echo '<pre>', print_r( $menu, 1 ), '</pre>'; // top level menus
echo '<pre>', print_r( $submenu, 1 ), '</pre>'; // submenus
}
}
}
add_action( 'admin_notices', 'debug_admin_menus' );
function action_admin_menu() {
global $menu, $submenu;
// Unset 'Products: add new'
unset( $submenu['edit.php?post_type=product'][10] );
}
add_action( 'admin_menu', 'action_admin_menu' );
相关:
How to rename a menu tab under WooCommerce tab on WordPress admin dashboard
我的 WooCommerce 版本是 4.5.2。
我想删除自定义用户的“添加订单”,这样它就无法访问wp-admin/post-new.php?post_type=shop_order
。
我使用用户角色编辑器创建了一个具有以下权限的自定义用户:
这样,用户只能查看现有订单,点击订单预览更新到'Completed'。
我试过用这个:
remove_submenu_page( 'edit.php?post_type=shop_order', 'post-new.php?post_type=shop_order');
...但是无法访问订单主菜单。
我发现了这个 post
我希望有人能为我指出如何实现我正在寻找的目标的方向。
更新:
根据 7uc1f3r 的回答,这是我的输出
[edit.php?post_type=shop_order] => Array
(
[5] => Array
(
[0] => Orders
[1] => edit_shop_orders
[2] => edit.php?post_type=shop_order
)
[10] => Array
(
[0] => Add order
[1] => edit_shop_orders
[2] => post-new.php?post_type=shop_order
)
)
使用提供的解决方案,我使用它以便自定义用户无法添加订单和访问 wp-admin/post-new.php?post_type=shop_order:
unset( $submenu['edit.php?post_type=shop_order'][10][0] );
unset( $submenu['edit.php?post_type=shop_order'][10][1] );
unset( $submenu['edit.php?post_type=shop_order'][10][2] );
此外,我应用CSS在管理面板隐藏'Add order':
ul.wp-submenu.wp-submenu-wrap {
display: none !important;
}
现在看起来像这样:
我正在使用 WC 4.4.1
和 WC 4.6.0
,在这两个版本中都无法从菜单中创建新订单。
更新:根据您发布的输出,这应该足以删除“订单:添加新”
function action_admin_menu() {
global $menu, $submenu;
// Unset 'Order: add new'
unset( $submenu['edit.php?post_type=shop_order'][10] );
}
add_action( 'admin_menu', 'action_admin_menu' );
可选:对于“产品:新增”和调试,您可以使用
// DEBUG: This displays the complete wordpress admin menu on your dashboard for admin only. (Remove afterwards)
function debug_admin_menus() {
global $menu, $submenu, $pagenow;
if ( current_user_can('manage_options') ) {
if( $pagenow == 'index.php' ) { // print on dashboard
echo '<pre>', print_r( $menu, 1 ), '</pre>'; // top level menus
echo '<pre>', print_r( $submenu, 1 ), '</pre>'; // submenus
}
}
}
add_action( 'admin_notices', 'debug_admin_menus' );
function action_admin_menu() {
global $menu, $submenu;
// Unset 'Products: add new'
unset( $submenu['edit.php?post_type=product'][10] );
}
add_action( 'admin_menu', 'action_admin_menu' );
相关:
How to rename a menu tab under WooCommerce tab on WordPress admin dashboard