ユーザーが別の管理ページにアクセスした場合、そのユーザーを管理ページにリダイレクトすることは可能ですか?
たとえば、ユーザーが「全ページ」をヒットしたことがある場合は/wp-admin/edit.php?post_type=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;
}
}
フックadmin_init
で上記の関数を起動します。
add_action( 'admin_init', 'disallowed_admin_pages' );
Michaelのソリューションはクラス内での使用を意図しているように思われるので、functions.phpで直接動作するスタンドアロン関数を望む人のために、以下の例はcustomize.phpからテーマオプションページへのリダイレクトと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');
はい、これはadmin_init
に action を追加することで可能になります。その時点でリクエストuriが/wp-admin/edit.php?post_type=page
と一致するかどうかを確認し、投稿の追加ページへのリダイレクトを発行する場合は/wp-admin/post-new.php?post_type=page
を確認できます。
WordPressコーデックスの プラグインAPI と action reference のページでは、アクションとそれらがどのように機能するかについてさらに詳しく説明しています。