web-dev-qa-db-ja.com

管理者以外のユーザーをwp-admin/index.php(メインダッシュボードページ)からwp-admin/profile.phpにリダイレクトをする

管理者以外のユーザーが「ダッシュボード」リンクを表示できないように、またはメインの「wp-admin/index.php」ページにアクセスできないように設定しました。管理者以外のユーザーが新しいページを作成することを制限する プラグインも追加しました 。管理者以外のユーザーが新しいページを追加しようとすると、誤って "wp-admin/index.php?permissions_error = true"にリダイレクトされます。 "wp-admin/index.php"、または "ダッシュボード"ページ。

Wp-admin/index.php(メインダッシュボードページ)へのアクセスを制限する、またはそれらをwp-admin/profile.phpページにリダイレクトするにはどうすればよいですか。

私が達成しようとしていることのスクリーンショット:  URLアドレスの "wp-admin/index.php"の横に "?permissions_error = true"を追加するほど賢い人がいれば、メインのダッシュボードページ "wp-admin/index.php"にアクセスすることもできます許可がない場合.

  • 私は "Redirect 301 /localhost/ft/wp-admin/index.php?permissions_error=true http://google.com "を.htaccessに追加してみましたしかし、それは "?permissions_error = true"のために動作していません。
1
lee

最も簡単な解決策はload-index.phpをフックして、管理者以外のユーザーを自分のプロファイルにリダイレクトすることです。そのページへのアクセスを効果的にブロックします。この例では、パーミッションチェックを関数にまとめます(複数回使用します)。

function _wpse206466_can_view()
{
    // or any other admin level capability
    return current_user_can('manage_options');
}


add_action('load-index.php', 'wpse206466_load_index');
function wpse206466_load_index()
{
    if (!_wpse206466_can_view()) {
        $qs = empty($_GET) ? '' : '?'.http_build_query($_GET);
        wp_safe_redirect(admin_url('profile.php').$qs);
        exit;
    }
}

ユーザーがアクセスできない場合は、管理者メニューから管理者インデックスページを削除することもできます。これを行うには、admin_menuにフックし、機能を確認してからページを削除します。

add_action('admin_menu', 'wpse206466_remove_index');
function wpse206466_remove_index()
{
    if (!_wpse206466_can_view()) {
        remove_menu_page('index.php');
    }
}

これがプラグインとしての です。

2
chrisguitarguy