¿Cómo puedes verificar si estás en una página específica en la sección de administración de WordPress? Por ejemplo, ¿cómo puedo verificar si estoy en la página Usuarios > Tu Perfil?
Estoy desarrollando un plugin y quiero agregar fragmentos de JavaScript en el head del administrador, pero solo para ciertas páginas administrativas. No me refiero a páginas como las que creas en WordPress, sino a las páginas existentes de la sección de administración como 'Tu Perfil', 'Usuarios', etc. ¿Existe una función específica de WordPress para esta tarea? He estado buscando y solo puedo encontrar la función booleana is_admin
y hooks de acciones, pero no una función booleana que simplemente verifique.

Existe una variable global en wp-admin llamada $pagenow que contiene el nombre de la página actual, como edit.php, post.php, etc.
También puedes verificar la solicitud $_GET para delimitar aún más tu ubicación, por ejemplo:
global $pagenow;
if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) {
// editando una página
}
if ($pagenow == 'users.php') {
// página de listado de usuarios
}
if ($pagenow == 'profile.php') {
// página de edición de perfil de usuario
}

global $pagenow; if ( ( 'admin.php' === $pagenow ) && ( 'prefix-theme-settings' === $_GET['page'] ) ) { lógica.. }
por ejemplo verifica si estás en una página de configuración de tema personalizada admin.php?page=prefix-theme-settings
.

El método más completo es get_current_screen
añadido en WordPress 3.1
$screen = get_current_screen();
devuelve
WP_Screen Object (
[action] =>
[base] => post
[id] => post
[is_network] =>
[is_user] =>
[parent_base] => edit
[parent_file] => edit.php
[post_type] => post
[taxonomy] =>
)

"Restricciones de uso --
Esta función está definida en la mayoría de las páginas de administración, pero no en todas. Por lo tanto, hay casos en los que is_admin() devolverá verdadero, pero intentar llamar a get_current_screen() resultará en un error fatal porque no está definido. Un ejemplo conocido es wp-admin/customize.php.
La función devuelve nulo si se llama desde el hook admin_init. Debería ser seguro usarlo en un hook posterior como current_screen." -- Codex.

@ThatBrazilianGuy Una verificación rápida sugiere que esto ya no es así, por lo que puedo ver get_current_screen()
es seguro de usar en todas las páginas de administración.

@shahar esto sigue siendo así, según la documentación enlazada arriba y mi experiencia.

sigue siendo el caso. Puedes reproducirlo al crear un plugin y luego activarlo. Esto generará un error fatal durante la activación ya que estás en una página donde la función no está definida :(

La forma de hacer esto es usar el hook 'admin_enqueue_scripts' para encolar los archivos que necesites. Este hook recibirá un parámetro $hook_suffix que se relaciona con la página actual que se está cargando:
function my_admin_enqueue($hook_suffix) {
if($hook_suffix == 'appearance_page_theme-options') {
wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery'));
wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css');
?>
<script type="text/javascript">
//<![CDATA[
var template_directory = '<?php echo get_template_directory_uri() ?>';
//]]>
</script>
<?php
}
}
add_action('admin_enqueue_scripts', 'my_admin_enqueue');

Para ofrecer un método/enfoque alternativo a la pregunta anterior.
// Cuando estás viendo la lista de usuarios o editando el perfil de otro usuario
add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' );
// Cuando estás editando tu propio perfil
add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' );
function your_enqueue_callback() {
wp_enqueue_script( .. TUS ARGUMENTOS DE ENCOLAMIENTO .. );
}
Este método apunta a las páginas específicas de manera más directa y evita la necesidad de lógica condicional dentro de tu función de callback (porque ya has hecho esa distinción en el hook seleccionado).

Me parece extraño que nadie haya mencionado el hecho de que la función add_menu_page devuelve un hook de acción que puedes usar para realizar ciertas acciones solo en esas páginas
$hook = add_menu_page($menu_title, $page_title, $capability, $slug, $function, $icon_url, $position);
add_action( 'load-' . $hook, 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts() {
wp_enqueue_script(/*...*/);
wp_enqueue_style(/*...*/);
}
Si necesitas el $hook y no agregaste el menú tú mismo, la documentación está aquí
Por ejemplo, el hook para una página de menú de nivel superior es
load-toplevel_page_$MenuSlug
El hook para una página de submenú es
load-$MenuSlug_page_$SubMenuSlug
Siguiendo esa lógica, el hook para la página de perfil del usuario es
load-users_page_profile
