J'ai un groupe de types de messages personnalisés tels que "CPT A", "CPT B" et "CPT C". J'affiche la page d'administration pour chacun de ces éléments en tant que sous-pages sous une page d'administration commune.
add_menu_page('Console',
'Console',
'plugin_console',
'plugin',
array ( $this, 'page_main' ),
"http://example.com/favicon.ico",
6
);
Il existe également des taxonomies personnalisées pour les CPT, dont certaines sont partagées.
Ce que je vais faire, c’est, dans le volet admin, ajouter une page de sous-menu à partir de la page principale qui renvoie aux taxonomies dans edit-tags.php.
add_submenu_page('plugin',
'Taxonomy',
'Taxonomy',
'manage_options',
'plugin-taxonomy',
array( $this, 'page_taxonomy' )
);
Le problème que je rencontre est que la liste ne remplit pas. Toutes les suggestions sur une bonne/meilleure approche sont les bienvenues.
Juste pour faire suite, je veux un menu qui ressemble à quelque chose comme:
-Console
--CPT A
--CPT B
--CPT C
--Taxonomy 1
--Taxonomy 2
Nous pourrions manipuler les $menu
et $submenu
globaux dans le hook admin_menu
. Mais il est plus facile de laisser les WP Classes du menu Admin de Mike Schinkel s'en charger.
require_once('inc/wp-admin-menu-classes.php');
add_action( 'admin_menu', function()
{
$plugin_page = 'wpse_114343';
add_menu_page(
'Console',
'Console',
'edit_pages',
$plugin_page,
function() {},
"http://cdn.sstatic.net/stackexchange/img/favicon.ico",
6
);
// Move the CPT Movie and remove original
$cpt = "edit.php?post_type=movie";
copy_admin_menu_item( $plugin_page,$cpt );
remove_admin_menu_section( $cpt );
// Move the CPT Page and remove original
$cpt2 = "edit.php?post_type=page";
copy_admin_menu_item( $plugin_page, $cpt2 );
remove_admin_menu_section( $cpt2 );
// Move Posts Category and Tags and remove originals
$cat = "edit-tags.php?taxonomy=category";
$tag = "edit-tags.php?taxonomy=post_tag";
$tax_menu = 'edit.php';
copy_admin_menu_item( $plugin_page, $tax_menu, $cat );
copy_admin_menu_item( $plugin_page, $tax_menu, $tag );
remove_admin_menu_item( $tax_menu, $cat );
remove_admin_menu_item( $tax_menu, $tag );
});