Redirección de Página de Administración
¿Es posible redirigir usuarios a una página de administración si acceden a otra página de administración?
Por ejemplo, si un usuario accede a "todas las páginas" /wp-admin/edit.php?post_type=page
serían redirigidos a "añadir nueva página" /wp-admin/post-new.php?post_type=page

/**
* Redirigir páginas de administración.
*
* Redirige una página de administración específica a otra página de administración específica.
*
* @return void
* @author Michael Ecklund
*
*/
function disallowed_admin_pages() {
global $pagenow;
# Verificar la página de administración actual.
if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {
wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
exit;
}
}
Ejecutar la función anterior en el hook admin_init
.
add_action( 'admin_init', 'disallowed_admin_pages' );
Sintaxis alternativa:
/**
* Redirigir páginas de administración.
*
* Redirige una página de administración específica a otra página de administración específica.
*
* @return void
* @author Michael Ecklund
*
*/
add_action( 'admin_init', function () {
global $pagenow;
# Verificar la página de administración actual.
if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {
wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
exit;
}
} );

La solución de Michael parece estar diseñada para usarse dentro de una clase, así que para aquellos que deseen una función independiente que funcione directamente en functions.php, el siguiente ejemplo incluye una redirección desde customize.php a una página de opciones del tema y la de la función original de Michael.
function admin_redirects() {
global $pagenow;
/* Redirigir el Personalizador a Opciones del tema */
if($pagenow == 'customize.php'){
wp_redirect(admin_url('/admin.php?page=theme_options', 'http'), 301);
exit;
}
/* Redirección del OP desde /wp-admin/edit.php?post_type=page */
if($pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == 'page'){
wp_redirect(admin_url('/post-new.php?post_type=page', 'http'), 301);
exit;
}
}
add_action('admin_init', 'admin_redirects');

Sí, esto es posible añadiendo una acción a admin_init
, en ese punto podrías verificar el URI de la solicitud para ver si coincide con /wp-admin/edit.php?post_type=page
y si es así, redirigir a la página de añadir entradas: /wp-admin/post-new.php?post_type=page
.
Además, las páginas de la API de Plugins y la referencia de acciones en el codex de WordPress entran en más detalle sobre las acciones y cómo funcionan.
