web-dev-qa-db-fra.com

Custom Post Type Menus

J'écris un plugin pour le travail parce que notre site Web principal est finalement porté sur WordPress. Plusieurs types de messages personnalisés sont planifiés pour ce plug-in et je souhaite les regrouper dans un menu principal.

Fondamentalement,Je souhaite que le lien "Visiteurs" soit placé sous "Argus Admin" . Les autres liens ne doivent pas nécessairement être ajoutés car je peux les "pirater" où je veux.

    $v_args = array(
        'labels' => array (
                'name' => 'Visitors',
                'singular_name' => 'Visitor',
                'add_new_item' => 'Register New Visitor', // TODO: http://codex.wordpress.org/Function_Reference/register_post_type#Arguments
            ),
        'public' => true,
        'publicly_queryable' => false,
        'exclude_from_search' => true,
        'show_ui' => true,
        'show_in_menu' => 'argus',  // TODO: This doesn't work...
        'hiearchical' => false,
        'supports' => array( '' ),
        'register_meta_box_cb' => array ( &$this, '_wp_visitor_meta_box_cb' ),
    );

    register_post_type( $post_type, $v_args );

C'est ma page de menu que j'ai créée:

add_menu_page( 'Argus', 'Argus Admin', 'manage_options', 'argus', array( &$this, '_wp_argus_main_panel' ), '', -1 );
4
Zack

Vous avez bien compris, mais vous devez attendre que WordPress 3.1 soit réellement implémenté. si vous ne pouvez pas attendre, vous pouvez remplacer "show_in_menu" par false et utiliser la fonction add_submenu_page () pour définir "argus" comme page d'accueil et ajouter les visiteurs "manuellement" dans le menu Argus Admin.

alors votre code serait:

$v_args = array(
        'labels' => array (
                'name' => 'Visitors',
                'singular_name' => 'Visitor',
                'add_new_item' => 'Register New Visitor',
            ),
        'public' => true,
        'publicly_queryable' => false,
        'exclude_from_search' => true,
        'show_ui' => true,
        'show_in_menu' => 'flase',
        'hiearchical' => false,
        'supports' => array( '' ),
        'register_meta_box_cb' => array ( &$this, '_wp_visitor_meta_box_cb' ),
    );

    register_post_type( $post_type, $v_args );

et alors

add_menu_page( 'Argus', 'Argus Admin', 'manage_options', 'argus', array( &$this, '_wp_argus_main_panel' ), '', -1 );
add_submenu_page( argus, 'Visitors', 'Visitors', 'manage_options' , 'visitors' , 'edit.php?post_type=visitors'); 

J'espère que cela t'aides

6
Bainternet

Si cela devait finalement être porté sur WordPress (comme dans, pas avant quelques semaines), je suggérerais d'attendre que WordPress 3.1 sorte. C'est dû très bientôt, et il le fait déjà. Bien sûr, vous pouvez éviter l'attente et simplement développer sur le tronc. La façon dont vous le faites devrait fonctionner dans la version 3.1 sans aucun changement.

1
John P Bloch