Una de las cosas que puede que necesitemos alguna vez cuando desarrollemos sobre WordPress, es a esconder el menú de un Custom Post Type y añadirlo a otro sub menú de WordPress. Si normalmente creas plugins que no necesiten de Custom Post Types, quizá nunca te hayas encontrado en esta situación, pero si los usas, es posible que si que te hayas encontrado o que acabes encontrándote con la necesidad. Por ejemplo, WooCommerce tiene varios Custom post Type, como podría ser por ejemplo shop_order, que es dónde se guardan todos los pedidos, o el plugin de Seur, tiene seur_labels, que es dónde se guardan todas las etiquetas. ¿Qué tienen en común ambos plugins? pues que ambos tienen estos Custom Post Type en sus propios menus personalizados, no en el menú que crearía el CPT por defecto.
Aunque parezca mentira, el conseguir esto es más sencillo de lo que te puedas imaginar. En primer lugar, necesitaremos el Custom Post Type creado, y lo único que deberemos hacer es poner show_in_menu en false. Esto hará que no se muestre en el menú de WordPress. tenemos otras opciones que podemos utilizar para personalizar el CPT, pero no voy a profundizar en ello en esta entrada ya que no es de lo que se trata.
Una vez tengamos creado el CPT y puesto en false show_in_menu, deberemos añadirlo al menú personalizado que tengamos. Lo único que deberemos hacer, es utilizando la función add_submenu_page() añadir el Custom Post Type a nuestro menú.
https://gist.github.com/joseconti/482bebdeb3a2358e7d9c6c8fc421b53d
El add_submenu_page() deberemos ponerlo en nuestra función de creación de menú personalizado de nuestro plugin (o theme) en WordPress. Una vez hecho, podréis ver que ya podemos acceder al Custom Post Type desde el mes personalizado.
Lógicamente, deberemos poner el nombre de nuestro Custom Post Type en la línea, es decir edit.php?post_type={nuestro_custom_post_type}