WordPressサイトで現在利用可能な役割のリストを取得しますか?
-
16-10-2019 - |
質問
WordPressプラグインを作成するときは、サイト上の役割が特定の機能またはコンテンツにアクセスできるオプションを設定する必要があることがよくあります。これを行うには、プラグインDEVは、オプションで使用するためにサイトに存在する役割のリストを取得する必要があります。カスタムロールを作成できるため、デフォルトのロールが利用可能なロールだけであるとは想定できません。
リストを取得するための最良の方法は何ですか?
解決
役割はグローバル変数に保存されます $wp_roles
.
理想的な機能はです get_editable_roles()
から /wp-admin/includes/user.php
function get_editable_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters('editable_roles', $all_roles);
return $editable_roles;
}
「編集」 一部は、他の誰かが管理者以外の誰かが持っている場合に備えて、他のプラグインを提供するためです。 'edit_users'
特権(したがって、「管理者」をリストから削除する必要があります。そうでない場合は、ユーザーが管理者になる可能性があります)。カスタムロールの作成に使用されるロール管理プラグインは、そのフィルターを使用するものです。それ以外の場合、この関数は本質的にです get_roles()
(存在しません).
おそらく、あなたのプラグインは、管理者レベルの機能を持っている人に問題の設定ページのみを提供します 'manage_options'
基本的にはすべての役割にアクセスできる管理者であるため、フィルターはあなたに影響しないはずです。
もあります wp_dropdown_roles()
これはあなたに役割を与えます <option>
aのフィールド <select>
リスト (ただし、チェックボックスは、誰が何かにアクセスできるかを選択している多くのシナリオでうまく機能する可能性があります).
他のヒント
これを試して:
function get_role_names() {
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
return $wp_roles->get_names();
}
ps heh、その説明と返信を逃した、私を速すぎる:)
プラグインや機能なしで役割のリストを見つける方法は次のとおりですhttp://screencast.com/t/uawsglar3sh
多言語サイトを持っているもの、機能
function wp_roles_array() {
$editable_roles = get_editable_roles();
foreach ($editable_roles as $role => $details) {
$sub['role'] = esc_attr($role);
$sub['name'] = translate_user_role($details['name']);
$roles[] = $sub;
}
return $roles;
}
このようなローカライズされた配列を返します(ロール名はSlovak言語です):
Array
(
[0] => Array
(
[role] => administrator
[name] => Administrátor
)
[1] => Array
(
[role] => editor
[name] => Editor
)
[2] => Array
(
[role] => author
[name] => Autor
)
[3] => Array
(
[role] => contributor
[name] => Prispievateľ
)
)
これは、WordPressで、既存のすべてのユーザーロールの配列と各役割の機能を取得する方法です。画面に印刷したくない場合は、最後の行を省略してください。 2行目の$ロール変数は、ユーザーと機能の配列を保持しているため、必要な場合に使用できます。返された配列の例については、以下を参照してください。
global $wp_roles;
$roles = $wp_roles->roles;
// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';