管理-WooCommerce菜单中的自定义帖子类型-如何控制菜单顺序

时间:2018-01-19 作者:Sarah

我正在使用WordPress 4.9.1和WooCommerce 3.2.6。

我添加了一个新的自定义帖子类型(订阅),并在管理面板的“WooCommerce”菜单下插入了菜单项,使用\'show_in_menu\' => \'woocommerce\', 但我想立即将我的帖子类型移动到“订单”下。

enter image description here

我试过换衣服menu_position 但它没有任何效果。

register_post_type(\'subscription\',
    array(
      \'labels\' => array(
        \'name\' => __( \'Subscriptions\' ),
        \'singular_name\' => __( \'Subscription\' ),
        \'add_new_item\' => "Add New Subscription",
        \'edit_item\' => "Edit Subscription",
      ),
      \'public\' => true,
      \'has_archive\' => false,
      \'publicly_queryable\'  => false,
      \'show_in_rest\'       => false,
      \'show_in_menu\'       => \'woocommerce\',
      \'menu_position\'      => 9999,
      \'supports\' => array(
          \'title\',
          \'revisions\'
      )
    )
);
SOLUTION:

我改变了show_in_menufalse 注册我的帖子类型时,添加了以下代码:

function add_subscriptions_menu() {
    add_submenu_page(\'woocommerce\',\'Subscriptions\',\'Subscriptions\', \'manage_options\', \'edit.php?post_type=subscription\');
}

// Change the 30 to customise item\'s order within WooCommerce submenu.
add_action( \'admin_menu\', \'add_subscriptions_menu\', 30 );

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

menu_position 设置时不使用show_in_menu 到子菜单。

要将菜单置于最后一个位置,有两种解决方案。第一个是更改菜单构造优先级,如下所示:

add_action("admin_menu", function () {

    remove_action(\'admin_menu\', \'_add_post_type_submenus\');

    add_action( \'admin_menu\', \'_add_post_type_submenus\', 200);
    // 200 to set it after the last element of WooCommerce which as the priority 70

}, 1);
通过此操作,可以修改所有自定义帖子类型。如果这不是您想要的,第二种解决方案是设置show_in_menuFALSE 并使用创建子菜单https://developer.wordpress.org/reference/functions/add_submenu_page/

结束

相关推荐

Order Admin sub-menu items?

我正在使用向CPT管理菜单添加项目add_submenu_page 这很好,但它们被添加到CPT选项后的子菜单底部。我希望能够将它们放在最上面,但我想这个问题也可以应用于订购所有基于管理员的子菜单项。我所尝试的(不起作用,我尝试了几种变体),function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( \'edi