0
だから、私はユーザーにwordpressダッシュボードにアクセスする機能を拒否したいと思います。しかし、ユーザー間でメッセージを送信するためにAJAXを使用するフロントエンドPMをユーザーが使用できるようにしたい。WordPress:ユーザーがダッシュボードへのアクセスを拒否していますが、AJAXリクエストを許可していますか?
どのようにPMを許可できますが、ダッシュボードへのすべてのアクセスを拒否できますか?
古典のfunctions.phpのアプローチ:
add_action('init', 'my_custom_dashboard_access_handler');
function my_custom_dashboard_access_handler() {
// Check if the current page is an admin page
// && and ensure that this is not an ajax call
if (is_admin() && !(defined('DOING_AJAX') && DOING_AJAX)){
//Get all capabilities of the current user
$user = get_userdata(get_current_user_id());
$caps = (is_object($user)) ? array_keys($user->allcaps) : array();
//All capabilities/roles listed here are not able to see the dashboard
$block_access_to = array('subscriber', 'contributor', 'my-custom-role', 'my-custom-capability');
if(array_intersect($block_access_to, $caps)) {
wp_redirect(home_url());
exit;
}
}
}
残念ながら、これは... AJAXから思考をリダイレクトしますか?
ユーザーロールエディタを使用すると、ユーザーはダッシュボードにアクセスできますか?
基本的には、管理者がAJAXを制限せずにダッシュボードにアクセスできるようにします。