Answers:
/**
* 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;
}
}
将以上功能启动到钩子上admin_init
。
add_action( 'admin_init', 'disallowed_admin_pages' );
备用语法:
/**
* 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的解决方案似乎打算在一个类中使用,因此,对于任何想要直接在functions.php中直接使用的独立函数的人,下面的示例包括从custom.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
这一点,届时您可以检查请求uri以查看它是否匹配/wp-admin/edit.php?post_type=page
以及是否确实将重定向发送到添加帖子页面:/wp-admin/post-new.php?post_type=page
。
WordPress Codex上的Plugin API和操作参考页面也提供了有关操作及其工作方式的更多详细信息。