web-dev-qa-db-ja.com

管理ページから別の管理ページへのリダイレクト

特定のWordPress管理ページを別の管理ページにリダイレクトする方法を教えてください。

たとえば、私はユーザーにwp-admin/about.phpを見せたくありません。常にwp-admin/index.phpにリダイレクトするべきです。

プロモーション付きのプラグインウェルカムページにリダイレクトするプラグインもいくつかあります。このURLが次にこのURLにリダイレクトされるかどうかを確認できるようにしたいのです。

1
Shae

get_current_screen() を使用すると、どのページが特定の管理ページにリダイレクトされているかを確認できます。

get_current_screen()はスクリーンオブジェクトを次のように返します。

WP_Screen Object
(
    [action] => 
    [base] => dashboard
    [columns:WP_Screen:private] => 0
    [id] => dashboard
    [in_admin:protected] => site
    [is_network] => 
    [is_user] => 
    [parent_base] => 
    [parent_file] => 
    [post_type] => 
    [taxonomy] => 
    [_help_tabs:WP_Screen:private] => Array
        (
        )

    [_help_sidebar:WP_Screen:private] => 
    [_screen_reader_content:WP_Screen:private] => Array
        (
        )

    [_options:WP_Screen:private] => Array
        (
        )

    [_show_screen_options:WP_Screen:private] => 
    [_screen_settings:WP_Screen:private] => 
)

ページベースを識別するためにbaseキーを使うことができます。

例: -

add_action('current_screen', 'wpse_225416_redirect_admin_page');
/**
 * Redirect specific admin page
 */
function wpse_225416_redirect_admin_page() {
    $my_current_screen = get_current_screen();
    if (isset($my_current_screen->base) && $my_current_screen->base == 'about') {
        wp_redirect(admin_url());
        exit();
    }
}

その前はget_current_screen()は何も返さないのでcurrent_screenフックを使ってください。

2
Sumit