Laden Sie das Skript abhängig von der aktuellen Adminseite

Ich verwende load, um Skripte nur auf meiner Plugin-Seite in die Warteschlange einzureihen.

load-{$page_hook}

add_action("admin_menu", "sap_admin_menu"); function sap_admin_menu(){ $menu = add_menu_page("Sticky Audio Player Player manager", "Sticky Audio Player", "manage_options", "sap_player_manager", "sap_player_manager_page", 'dashicons-playlist-audio'); $submenu = add_submenu_page("sap_player_manager", "Sticky Audio Player Player manager", "Player manager", "manage_options", 'sap_player_manager', "sap_player_manager_page"); $submenu2 = add_submenu_page("sap_player_manager", "Sticky Audio Player Playlist manager", "Playlist manager", "manage_options", 'sap_playlist_manager', 'sap_playlist_manager_page'); add_action( 'load-' . $menu, 'sap_admin_enqueue_scripts' ); add_action( 'load-' . $submenu, 'sap_admin_enqueue_scripts' ); add_action( 'load-' . $submenu2, 'sap_admin_enqueue_scripts' ); } 

Das funktioniert gut, aber ich würde gerne wissen, auf welcher Seite ich gerade bin, damit ich verschiedene Skripte in die function sap_admin_enqueue_scripts einfügen kann:

 function sap_admin_enqueue_scripts() { //I need to detect page here if ( is_page( 'sap_player_manager' ) ) {//this doesnt work } 

Ich habe versucht mit is_page, aber ich kann es nicht funktionieren.

Solutions Collecting From Web of "Laden Sie das Skript abhängig von der aktuellen Adminseite"

Sie können so etwas tun

 add_action( 'admin_menu', 'my_admin_menus' ); function my_admin_menus() { $GLOBALS['my_page'] = add_menu_page( 'Page Title', 'Menu Title', MY_ADMIN_CAPABILITY, 'menu-slug', 'show_page_content'); } add_action( 'admin_enqueue_scripts', 'enqueue_admin_js'); function enqueue_admin_js($hook) { if($GLOBALS['my_page'] === $hook) { wp_enqueue_script( 'jquery-ui-core' ); wp_enqueue_script( 'jquery-ui-tabs' ); // Isn't it nice to use dependencies and the already registered core js files? wp_enqueue_script( 'my-script', INCLUDES_URI . '/js/my_script.js', array( 'jquery-ui-core', 'jquery-ui-tabs' ) ); } } 

Was ist mit get_current_screen() ?

 $screen = get_current_screen(); if ( 'sap_player_manager' === $screen->id ) { } 

schau in get_current_screen();

Einige Hinweise aus dem Codex:

Diese function ist auf den meisten Verwaltungsseiten definiert, aber nicht auf allen. Daher gibt es Fälle, in denen is_admin() true is_admin() , der Versuch, get_current_screen() , führt jedoch zu einem schwerwiegenden Fehler, da dieser nicht definiert ist. Ein bekanntes Beispiel ist wp-admin / customize.php.

Es gibt auch einen current_screen Hook für einen anderen Ansatz.

Beide stellen einen WP_Screen . zum Beispiel:

 WP_Screen Object { ["action"] => string(0) "" ["base"] => string(4) "post" ["columns":"WP_Screen":private] => int(0) ["id"] => string(12) "someposttype" ["in_admin":protected] => string(4) "site" ["is_network"] => bool(false) ["is_user"] => bool(false) ["parent_base"] => NULL ["parent_file"] => NULL ["post_type"] => string(12) "someposttype" ["taxonomy"] => string(0) "" ["_help_tabs":"WP_Screen":private] => array(0) { } ["_help_sidebar":"WP_Screen":private] => string(0) "" ["_options":"WP_Screen":private] => array(0) { } ["_show_screen_options":"WP_Screen":private] => NULL ["_screen_settings":"WP_Screen":private] => NULL }