Перенаправление на Административную Страницу
Возможно ли перенаправить пользователей на определенную административную страницу, если они заходят на другую административную страницу?
Например, если пользователь попадает на "все страницы" /wp-admin/edit.php?post_type=page
они будут перенаправлены на "добавить новую страницу" /wp-admin/post-new.php?post_type=page

/**
* Перенаправление административных страниц.
*
* Перенаправление определенной административной страницы на другую конкретную административную страницу.
*
* @return void
* @author Michael Ecklund
*
*/
function disallowed_admin_pages() {
global $pagenow;
# Проверяем текущую административную страницу.
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' );
Альтернативный синтаксис:
/**
* Перенаправление административных страниц.
*
* Перенаправление определенной административной страницы на другую конкретную административную страницу.
*
* @return void
* @author Michael Ecklund
*
*/
add_action( 'admin_init', function () {
global $pagenow;
# Проверяем текущую административную страницу.
if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {
wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
exit;
}
} );

Решение Майкла, по-видимому, предназначено для использования внутри класса, поэтому для тех, кто хочет автономную функцию, которая будет работать напрямую в functions.php, в примере ниже представлено перенаправление с customize.php на страницу настроек темы, а также перенаправление из оригинальной функции Майкла.
function admin_redirects() {
global $pagenow;
/* Перенаправление из Customizer в настройки темы */
if($pagenow == 'customize.php'){
wp_redirect(admin_url('/admin.php?page=theme_options', 'http'), 301);
exit;
}
/* Перенаправление из /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');

Да, это возможно, добавив действие (action) к хуку admin_init
. В этот момент вы можете проверить URI запроса на соответствие /wp-admin/edit.php?post_type=page
, и если оно совпадает, перенаправить на страницу добавления записей: /wp-admin/post-new.php?post_type=page
.
Также страницы Plugin API и справочник по действиям (action reference) в WordPress Codex подробно рассказывают о действиях и их работе.
