Entfernen Sie die Standardunterseiten aus dem Menü “Benutzerdefiniertes Post”

Ich erstelle einen benutzerdefinierten Beitragstyp mit register_post_type . Nach dem Ausführen der function erscheint ein neuer Menüpunkt im Admin Panel.

Unter diesem Menüpunkt befinden sich Menüpunkte für new_item und all_items . Gibt es eine Möglichkeit, diese beiden Optionen zu lesen, wenn ich bedenke, dass ich eine benutzerdefinierte Seite erstellt habe, um diese Beiträge zu verwalten.

Solutions Collecting From Web of "Entfernen Sie die Standardunterseiten aus dem Menü “Benutzerdefiniertes Post”"

Sie können das globale Variable $submenu manipulieren und sie entfernen. Unter normalen Umständen sind die Indexschlüsselwerte 5 (Alle Artikel) und 10 (Neuer Artikel). In diesem Beispiel ist der Post-Typ portfolio :

 add_action( 'admin_init', 'remove_cpt_submenus_wpse_95797' ); function remove_cpt_submenus_wpse_95797() { global $submenu; unset( $submenu['edit.php?post_type=portfolio'][5], $submenu['edit.php?post_type=portfolio'][10] ); } 

Registrieren Sie den Post-Typ mit show_ui auf false gesetzt. Wie diese modifizierte Version des Beispiels im Codex:

 function codex_custom_init() { $labels = array( 'name' => 'Books', 'singular_name' => 'Book', 'add_new' => 'Add New', 'add_new_item' => 'Add New Book', 'edit_item' => 'Edit Book', 'new_item' => 'New Book', 'all_items' => 'All Books', 'view_item' => 'View Book', 'search_items' => 'Search Books', 'not_found' => 'No books found', 'not_found_in_trash' => 'No books found in Trash', 'parent_item_colon' => '', 'menu_name' => 'Books' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => false, // this is the change // 'show_in_menu' => true, // only works with show_ui true 'query_var' => true, 'rewrite' => array( 'slug' => 'book' ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) ); register_post_type( 'book', $args ); } add_action( 'init', 'codex_custom_init' ); 

Hinweis: Mit …

  'show_ui' => true, 'show_in_menu' => false, 

… Sie erhalten den Menüeintrag nicht, aber Sie erhalten die Verwaltungsseite, wenn Sie zu dem Link navigieren, so dass Sie ihn aus dem Menü entfernen können, aber dennoch über ein funktionierendes Standardbearbeitungssystem verfügen, wenn Sie möchten.

Bearbeiten:

Sie haben angegeben, dass Sie eine benutzerdefinierte Seite zum Verwalten dieser Posts erstellt haben. Sie müssen auch eine eigene Verwaltungsseite dafür registriert haben. Ich bin mir nicht sicher, warum Sie das Generierte brauchen. Anders ausgedrückt, ich bin mir nicht sicher, warum Sie diese Standard-Verwaltungsseiten nur zum Entfernen der Menüs generieren müssen. Jedoch…

 function remove_add_new_menu_wpse_94776() { remove_submenu_page('edit.php?post_type=book','edit.php?post_type=book'); remove_submenu_page('edit.php?post_type=book','post-new.php?post_type=book'); } add_action('admin_menu','remove_add_new_menu_wpse_94776'); 

Dies wird von einem anderen Thread kopiert , wie Sie an dem numerischen Suffix des functionsnamens erkennen können. Das obige kann dazu führen, dass das gesamte Menü nur unter den richtigen Umständen auf die oberste Ebene reduziert wird, es sei denn, es gibt ein anderes Menü, das vermutlich vorhanden ist, aber der Vollständigkeit halber ist hier eine Art Dummy-Menü.

 function remove_only_add_new_wpse_95797() { global $submenu; add_submenu_page( 'edit.php?post_type=book', 'test', 'test', 'edit_posts', basename('test'), 'test_cb_wpse_95797' ); } function test_cb_wpse_95797() { echo 'hi'; } add_action('admin_menu','remove_only_add_new_wpse_95797');