Redireccionamiento de la página de administración

18

¿Es posible redirigir a los usuarios a una página de administrador si acceden a otra página de administrador?

Por ejemplo, si un usuario llega a "todas las páginas" /wp-admin/edit.php?post_type=page

serían redirigidos a "agregar nueva página" /wp-admin/post-new.php?post_type=page

Shae
fuente

Respuestas:

24
/**
 * Redirect admin pages.
 *
 * Redirect specific admin page to another specific admin page.
 *
 * @return void
 * @author Michael Ecklund
 *
 */
function disallowed_admin_pages() {

    global $pagenow;

    # Check current admin page.
    if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {

        wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
        exit;

    }

}

Activa la función anterior en el gancho admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Sintaxis alternativa:

/**
 * Redirect admin pages.
 *
 * Redirect specific admin page to another specific admin page.
 *
 * @return void
 * @author Michael Ecklund
 *
 */
add_action( 'admin_init', function () {

    global $pagenow;

    # Check current admin page.
    if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {

        wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
        exit;

    }

} );
Michael Ecklund
fuente
3

La solución de Michael parece estar diseñada para usarse dentro de una clase, por lo que para cualquiera que desee una función independiente que funcione directamente en functions.php, el ejemplo a continuación incluye una redirección desde personalizar.php a una página de opciones de tema y la de la función original de Michael .

function admin_redirects() {
    global $pagenow;

    /* Redirect Customizer to Theme options */
    if($pagenow == 'customize.php'){
        wp_redirect(admin_url('/admin.php?page=theme_options', 'http'), 301);
        exit;
    }

    /* OP's redirect from /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');
usuario3245709
fuente
0

Sí, esto es posible agregando una acción a admin_init, en ese momento, puede verificar la uri de la solicitud para ver si coincide /wp-admin/edit.php?post_type=pagey si emite una redirección a la página de agregar publicaciones:/wp-admin/post-new.php?post_type=page .

Además, la API de complementos y las páginas de referencia de acciones en el códice de WordPress entran en más detalles sobre las acciones y cómo funcionan.

ampt
fuente