はwp_authenticateの賛成で廃止されました。
さらに、WordPressにはロールをはるかに超える驚異のCapabilities APIがあります。私は強く読むことをお勧めします。私はWordPressのオプション(管理者の役割から継承されmanage_options
と呼ばれる機能)を管理するためのユーザーのアクセスを許可したい場合は簡単な例については、私がしなければならないすべてはcurrent_user_can('manage_options')
を言うかWP_User->has_cap(...)
機能を使用
です。
機能に基づいたマッチングは、ロールのマッチングよりもはるかに柔軟です。たとえば、自分のサイトに「デベロッパー」という2番目の役割があるとします。役割に基づいてアクセスをゲートしていて、デベロッパーの役割のユーザーに機能へのアクセスを許可する場合は、ユーザー権限を確認する必要があるときはいつでも、2番目のチェックを追加する必要があります。($role == 'administrator' || $role == 'developer')
すでにログインしているユーザーは、あなたは常にで自分の能力を確認することができます。
current_user_can('manage_options') // all admins have 'manage_options'
か、独自のカスタムキャップを定義し、すべての管理者にそれを与える:
function add_custom_admin_caps() {
$role = get_role('administrator');
$role->add_cap('access_my_admin_zone');
}
add_action('admin_init', 'add_custom_admin_caps');
をして、現在のユーザーに対してカスタムキャップをご確認ください
current_user_can('access_my_admin_zone')
機能に追加された利点は、WP Adminメニューをレンダリングするとき、あなたの管理セクションが追加_ * _ページ機能(add_menu_page())と 'のような機能の一つの利用登録をした場合、ワードプレスは自動的に現在のユーザーの権限を確認するということですmanage_options'
add_menu_page ($title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position)
最後には、それはあなたが最初からユーザーにログインしている場合ので、私はこの代替を提案する場合は、ユーザーに自分のログを記録しているかどうかに関して、少し不明であった(すなわち)ワードプレスのログインフォームを使用していない:
$user = wp_authenticate($user, $pass);
if (is_a($user, 'WP_User') && $user->has_cap('manage_options')) {
// success
} else {
// fail
}
それが失敗した場合にも、あなたにそれらを指示、その後、ユーザーがログインして権限を持っていることを確認するために、カスタム管理者のすべてのページのロード中current_user_can('manage_options')
を呼び出す必要がありますカスタムログインページ...または可能であれば、auth_redirect()のwordpressログインページ。
user_pass_ok()は非推奨です。代わりにwp_authenticateを使用してください(WP_UserまたはWP_Errorを返すことに注意してください):https://developer.wordpress.org/reference/functions/wp_authenticate/ – edhurtig