Short answer, use:
$args = array('show_in_menu' => 'woocommerce');
register_post_type('my_posttype', $args);
But this won't give you the custom post type submenus.
You can also use add_submenu_page
, the code below is just an example:
function register_my_custom_submenu_page() {
add_submenu_page( 'woocommerce', 'My Custom Submenu Page', 'My Custom Submenu Page', 'manage_options', 'my-custom-submenu-page', 'my_custom_submenu_page_callback' );
}
function my_custom_submenu_page_callback() {
echo '<h3>My Custom Submenu Page</h3>';
}
add_action('admin_menu', 'register_my_custom_submenu_page',99);
You need a high(er) priority number to execute it later then the woocommerce_admin_menu
function, which has 9, and there is woocommerce_admin_menu_after
, which has 50 - those functionbs are in woocommerce-admin-init.php
.