it-swarm.com.de

Benutzerdefinierte Post-Menüs

Ich schreibe ein Plugin für die Arbeit, weil unsere Hauptwebsite irgendwann nach WordPress portiert wird. Für dieses Plugin sind mehrere benutzerdefinierte Beitragstypen geplant, die alle in einem Hauptmenü gruppiert werden sollen.

Grundsätzlich Ich möchte, dass der Link "Besucher" unter "Argus Admin" platziert wird. Die anderen Links müssen nicht hinzugefügt werden, da ich sie "hacken" kann, wo immer ich will.

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

Diese meine Menüseite, die ich erstellt habe:

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

Sie haben es richtig gemacht, aber Sie müssen auf WordPress 3.1 warten, wo es tatsächlich implementiert ist. Wenn Sie nicht warten können, können Sie "show_in_menu" in "false" ändern und die Funktion "add_submenu_page ()" verwenden. Definieren Sie "argus" als Startseite und fügen Sie die Besucher "manuell" im Argus Admin-Menü hinzu.

ihr Code wäre also:

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

und dann

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

Hoffe das hilft

6
Bainternet

Wenn dies irgendwann nach WordPress portiert werden soll (wie in, nicht für ein paar Wochen), würde ich empfehlen, darauf zu warten, dass WordPress 3.1 herauskommt. Es ist sehr bald fällig und das tut es bereits. Natürlich könnte man das Warten überspringen und sich einfach am Kofferraum weiterentwickeln. Die Art und Weise, wie Sie es dort tun, sollte in 3.1 ohne Änderungen funktionieren.

1
John P Bloch