Redirection de la page d'administration


18

Est-il possible de rediriger les utilisateurs vers une page d'administration s'ils accèdent à une autre page d'administration?

Par exemple, si un utilisateur accède à "toutes les pages" /wp-admin/edit.php?post_type=page

ils seraient redirigés vers "ajouter une nouvelle page" /wp-admin/post-new.php?post_type=page

Réponses:


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;

    }

}

Déclenchez la fonction ci-dessus sur le crochet admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Syntaxe alternative:

/**
 * 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;

    }

} );

3

La solution de Michael semble être destinée à être utilisée dans une classe, donc pour tous ceux qui souhaitent une fonction autonome qui fonctionnera directement dans functions.php, l'exemple ci-dessous inclut une redirection de custom.php vers une page d'options de thème et celle de la fonction d'origine 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');

0

Oui cela est possible en ajoutant une mesure à admin_init, à ce moment - là , vous pouvez vérifier les uri de demande pour voir si elle correspond /wp-admin/edit.php?post_type=pageet si elle ne délivre une redirection vers les messages ajouter la page: /wp-admin/post-new.php?post_type=page.

Aussi l' API Plugin et le pages de référence d'action sur le codex WordPress détaillent également les actions et leur fonctionnement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.