WordPressプラグインを作成する際、多くの場合、サイト上のロールが特定の機能またはコンテンツにアクセスするためのオプションを設定する必要があります。これを行うには、プラグイン開発者がオプションで使用するサイトに存在するロールのリストを取得する必要があります。カスタムロールを作成できるため、デフォルトロールのみが使用できるとは限りません。
リストを取得する最良の方法は何ですか?
WordPressプラグインを作成する際、多くの場合、サイト上のロールが特定の機能またはコンテンツにアクセスするためのオプションを設定する必要があります。これを行うには、プラグイン開発者がオプションで使用するサイトに存在するロールのリストを取得する必要があります。カスタムロールを作成できるため、デフォルトロールのみが使用できるとは限りません。
リストを取得する最良の方法は何ですか?
回答:
ロールはグローバル変数に保存されます$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>
、<select>
リストのフィールドとしてロールを提供します(ただし、チェックボックスは、誰が何かにアクセスできるかを選択する多くのシナリオでうまく機能する可能性があります)。
プラグインや機能なしでロールのリストを見つける方法は次のとおりです 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;
}
このようなローカライズされた配列を返します(ロール名はスロバキア語です):
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ľ
)
)