cómo saber si el administrador está en la página de edición o entrada
Puedes usar get_current_screen
para determinar esto.
$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
echo 'pantalla de edición';
}
No sé si exactamente diría que esto es siempre mejor, depende de lo que se necesite, pero probablemente es la forma en que lo haría yo. La gran ventaja de este método es que obtienes acceso a más información y, por lo tanto, puedes hacer más y diferentes distinciones. Solo echa un vistazo a la documentación para entender a lo que me refiero.
Debería usarse en hooks posteriores, el Codex dice:
La función devuelve
null
si se llama desde el hookadmin_init
. Debería estar bien usarlo en un hook posterior comocurrent_screen
.

Esto también sería cierto en un listado de Entradas y Páginas, ¿verdad? Como por ejemplo miweb.com/wp-admin/edit.php?post_status=borrador&post_type=post

@Nathan Cierto, así es. Como se mencionó en la respuesta, lo que es adecuado depende del caso de uso. Esta ciertamente no es la mejor manera de proceder para todos los casos, pero en algunas situaciones es buena, si no incluso la mejor opción.

Nota: Llamar a get_current_screen() directamente en muchos casos causará un error fatal. Asegúrate de envolverlo en una función y llamarlo desde un hook apropiado.

$screen->is_block_editor == 1 funcionó para mí para verificar la página de edición. parent_base aparece vacío.

parent_base
siempre es NULL para mí tanto en la lista de publicaciones como en la edición de una sola publicación. Lo que usé en su lugar es if (get_current_screen()->base === 'post' && get_current_screen()->post_type === 'my_post_type')
. Esto es para la edición administrativa de una sola publicación. Para la pantalla edit.php (la pantalla de administración con la lista de publicaciones) usa edit
en lugar de post
.

editar: lee los comentarios para posibles limitaciones.
Puedes usar la variable global $pagenow
global $pagenow;
if ($pagenow == 'post.php' && get_post_type() == 'post') {
// editando una entrada de blog
}
if ($pagenow == 'profile.php') {
// editando la página de perfil de usuario
}

Encontré que esto funciona excepto para $_GET['post_type']
. Sin embargo, get_post_type()
funcionó para mí en su lugar.

$_GET['post_type']
solo se establece en post-new.php
, al crear una nueva entrada, y no en post.php
que es cuando se está editando la entrada. get_post_type()
funcionará para post.php porque la entrada ya existe y tiene un tipo de entrada, pero no estoy seguro de que funcione en post-new.php. La respuesta de Frank es mejor ya que funciona para ambos.

En la primera condición, ¿por qué hay un OR ( ||
) en lugar de un AND ( &&
)?

gracias por la ayuda. es la mejor respuesta para algunas situaciones.

no, ¿qué hay de post-new.php? hay nuevos nombres de página en cada versión importante, esto no es confiable.

- Usa 'get_current_screen', pero asegúrate primero de que existe.
- Como dice el codex "Esta función está definida en la mayoría de páginas de administración, pero no en todas."
- Esto, por cierto, también filtra las vistas normales (para lectores) (relee esa frase, con énfasis en páginas de administración).
es muy probable que lo siguiente que quieras averiguar es si estás realmente en una página o entrada...
// Eliminar meta cajas de entrada innecesarias function FRANK_TWEAKS_current_screen() { // "Esta función está definida en la mayoría de páginas de administración, pero no en todas." if ( function_exists('get_current_screen')) { $pt = get_current_screen()->post_type; if ( $pt != 'post' && $pt != 'page') return; remove_meta_box( 'authordiv',$pt ,'normal' ); // Meta caja de Autor remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Meta caja de Estado de Comentarios remove_meta_box( 'commentsdiv',$pt ,'normal' ); // Meta caja de Comentarios remove_meta_box( 'postcustom',$pt ,'normal' ); // Meta caja de Campos Personalizados remove_meta_box( 'postexcerpt',$pt ,'normal' ); // Meta caja de Extracto remove_meta_box( 'revisionsdiv',$pt ,'normal' ); // Meta caja de Revisiones remove_meta_box( 'slugdiv',$pt ,'normal' ); // Meta caja de Slug remove_meta_box( 'trackbacksdiv',$pt ,'normal' ); // Meta caja de Trackback } } add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );
