Est-il possible de rediriger les utilisateurs vers une page d'administrateur s'ils accèdent à une autre page d'administrateur?
Par exemple, si un utilisateur tape sur "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
/**
* Redirect admin pages.
*
* Redirect specific admin page to another specific admin page.
*
* @author Michael Ecklund
*
* @return void
*/
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' ), 301 );
exit;
}
}
Lancez la fonction ci-dessus sur le crochet admin_init
.
add_action( 'admin_init', 'disallowed_admin_pages' );
La solution de Michael semble être destinée à être utilisée dans une classe. Par conséquent, pour ceux qui souhaitent une fonction autonome fonctionnant directement dans functions.php, l'exemple ci-dessous inclut une redirection de translate.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');
Oui, cela est possible en ajoutant une action à admin_init
. À ce stade, vous pouvez vérifier la demande URI pour voir si elle correspond à /wp-admin/edit.php?post_type=page
et si elle génère une redirection vers la page d'ajout de publications: /wp-admin/post-new.php?post_type=page
.
De plus, le Plugin API et action reference pages du codex WordPress détaillent davantage les actions et leur fonctionnement.