web-dev-qa-db-fra.com

Regroupement des CPT et des taxonomies en groupes de menus dans admin

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
1
Gawain

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 );
});

manipulated wp-admin menu and sub-menu

0
brasofilo