Zuordnen eines benutzerdefinierten Untermenüelements zum Post-Typ des obersten Menüelements

Ich arbeite an einem Plugin, das Admin-Menü-Untermenü-Seiten für alle verschiedenen Post-Typen setzt.

Ich muss in der Lage sein, diese neuen Untermenü-Seiten mit dem entsprechenden Post-Typ des obersten Menü-Elements zu verknüpfen. Ist das möglich, ohne auf $_GET angewiesen zu $_GET ?

Ich sehe, dass $typenow auf edit.php , aber ich kann das nicht auf meiner benutzerdefinierten Seite verwenden, da es nur NULL zurückgibt.

Also im Grunde: Wie setze ich einen geeigneten / assoziierten Post-Typ auf einen benutzerdefinierten Menüpunkt.

AKTUALISIERT:

Hier ist ein Bild, das hoffentlich ein bisschen besser beschreibt, wonach ich suche. http://i.imgur.com/4q4Dy.jpg

Wie es jetzt ist, ist das benutzerdefinierte Element im Untermenü nur verfügbar, wenn Pages aktiv ist, da sonst $_GET nicht post_type .

Ich benutze:

 $post_type = esc_attr( $_GET['post_type'] ); $post_type_object = get_post_type_object( $post_type ); $title = $post_type_object->labels->name; $page = add_submenu_page( 'edit.php?post_type=' . $post_type, $title, $title, 'edit_pages', 'order-' . $post_type, 'cmspo_menu_order_page' ); 

Ich brauche also einen Weg, den passenden Post-Typ zu finden, mit dem das benutzerdefinierte Element verknüpft werden soll. In diesem Fall ist es “Seite”, aber unter jedem benutzerdefinierten Post-Typ gibt es benutzerdefinierte Elemente, die mit der capability_type Seite registriert wurden “Post”.

Solutions Collecting From Web of "Zuordnen eines benutzerdefinierten Untermenüelements zum Post-Typ des obersten Menüelements"

Sie benötigen die Informationen zum aktuellen Post-Typ in Ihrer Callback-function, die die Ausgabe der Untermenü-Seite rendert. Und an dieser Stelle stehen viele Informationen bereit:

 add_action( 'admin_menu', 'wpse_60730_demo_submenu' ); /** * Register sub menu pages. * * Note that get_current_screen() is still NULL now. * * @wp-hook admin_menu * @return void */ function wpse_60730_demo_submenu() { // get public post types $post_types = get_post_types( array ( 'public' => TRUE ) ); foreach ( $post_types as $post_type ) { add_submenu_page( "edit.php?post_type=$post_type", "Extra $post_type", // this should be made translatable "Extra $post_type", // this too "edit_{$post_type}s", "order-$post_type", 'wpse_60730_demo_callback' ); } } /** * Render the sub menu page output. * * All information is set now. * * @return void */ function wpse_60730_demo_callback() { $screen = get_current_screen(); global $typenow, $parent_file; print "
get_current_screen()\n" . htmlspecialchars( print_r( $screen, TRUE ) ) . '

'; print "

\$typenow: " . htmlspecialchars( print_r( $typenow, TRUE ) ) . '

'; print "

\$parent_file: " . htmlspecialchars( print_r( $parent_file, TRUE ) ) . '

'; }

Ergebnis

Bildbeschreibung hier eingeben