edit-tags.php im Plugin-Admin-Menü blendet aus, wann die aktive Seite ist

Für das Plugin, das ich baue, habe ich ein Untermenü als Kind zu einem benutzerdefinierten Hauptmenüpunkt im Admin hinzugefügt. Die Untermenü-Seite ist eine edit-tags.php Seite. Dies erscheint wie unter dem Hauptmenüpunkt vorgesehen. Wenn Sie auf diesen Untermenüpunkt klicken, wird der Benutzer zur richtigen Seite geführt. Der Hauptmenüpunkt wird jedoch wieder ausgeblendet und der aktuell geöffnete Untermenüeintrag wird ausgeblendet.

Mein anfängliches Gefühl ist, dass das Eltern-Slug-Attribut falsch ist, aber andere Untermenüs, die ich hinzugefügt habe, verwenden das gleiche Eltern-Slug-Attribut und sie funktionieren korrekt. Ich vermisse eindeutig eine Option in der function add_submenu_page() , aber ich kann nicht herausfinden, was.

So registriere ich das Untermenü:

 $this->plugin_screen_dashboard = add_submenu_page( $this->plugin_slug, // Parent slug __( 'Subscriber Lists', $this->plugin_slug ), // Page title __( 'Subscriber Lists', $this->plugin_slug ), // Menu title 'manage_options', // Capability 'edit-tags.php?taxonomy=subscriber_list&post_type=subscriber' // Menu slug ); 

–Bearbeiten–

So registriere ich den Hauptmenüpunkt:

 $this->plugin_screen_hook_suffix = add_menu_page( __( 'My Plugin', $this->plugin_slug ), // Page title __( 'My Plugin', $this->plugin_slug ), // Menu title 'manage_options', // Capability $this->plugin_slug, // Menu slug array( $this, 'display_plugin_admin_page' ), // Function 'dashicons-plus-alt' // Icon url ); 

Solutions Collecting From Web of "edit-tags.php im Plugin-Admin-Menü blendet aus, wann die aktive Seite ist"

Ich habe es geschafft, dies zu lösen, indem ich Javascript benutze, um den Menüeintrag zu öffnen, wenn ich auf der Seite “Tags bearbeiten” im Plugin bin.

Relevante Plugin-PHP-Datei

 $screen = get_current_screen(); // Check we're only on the edit-tags page in the plugin if ('edit-tags' === $screen->base && 'subscriber' === $screen->post_type) { wp_enqueue_script( $this->plugin_slug . '-subscriber-edit-tags-script', plugins_url('assets/js/subscriber-edit-tags.js', __FILE__ ), array('jquery') ); } 

subscriber-edit-tags.js (mit jQuery)

 (function ( $ ) { /** * File is called only when on edit tags under subscriber post type */ $('.toplevel_page_my_plugin') .removeClass('wp-not-current-submenu') .addClass('wp-has-current-submenu wp-menu-open') .find('li').has('a[href*="edit-tags.php"]') .addClass('current'); }(jQuery)); 

Ich hatte ein ähnliches Problem und war in der Lage, das unangemessene Menüverhalten mithilfe des Filters parent_file aufzulösen. $ parent_file wird in der Datei /wp-admin/edit-tags.php festgelegt, muss jedoch basierend auf Ihrem Anwendungsfall geändert werden.

 add_filter('parent_file', 'filter_subscriber_menu'); function filter_subscriber_menu($file) { $screen = get_current_screen(); if ('edit-tags' === $screen->base && 'subscriber' === $screen->post_type) { // in my case I drilled down to if($screen->id...); I used what you posted in your if clause above $file = {$this->plugin_slug}; //probably need to set this as a string; for the parent slug represented by $this->plugin_slug ; } return $file; }