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

Shae
la source

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;

    }

} );
Michael Ecklund
la source
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');
user3245709
la source
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.

ampère
la source