黄聡:WordPressの役割と権限ガイド
20686 ワード
WordPressは2.0バージョンでロールと権限(Roles and Capabilities)システムを導入し、以前のユーザーレベルの方法(User Levels)は廃止された.しかし、多くのプラグインやトピックでは、ユーザーレベルの方法を使用して、ユーザーが設定ページやその他の機能を表示することを制御しています.このガイドでは、WordPressの役割と権限システムについて詳しく説明し、最終的にはプラグインとトピックで正しく使用できます.
役割と権限とは?
他のCMSやWebプログラムと同様に、WordPressには、特定のユーザーが何らかの動作を行うのに十分な権限を持っているかどうかを検証するシステムが内蔵されています.WordPressという内蔵システムは、まずユーザーをロール(Role)に分け、各ロールに一定の権限を割り当てるロールと権限システムです.
次は、WordPressのデフォルトのユーザーロールです.管理者 -すべての管理権限を持つ 編集 -文章を発表したり、文章を編集したり、他の人の文章を編集したりします. 作者-自分の文章を発表し編集する 投稿者 -自分の文章を書いたり編集したりしますが、 は発行できません.購読者 -コメントの表示/コメントの追加/記事の表示など.
WordPressの役割と権限システムは、ユーザーレベルの方法よりも柔軟で、既存のユーザーロールの追加、削除、再割り当てをサポートし、さらに多くのユーザーロールを追加することができ、システムに組み込まれているユーザーロールを破壊しません.
ユーザー権限とバックグラウンドメニュー
多くのプラグインは、WordPressのバックグラウンドに管理ページを追加し、ユーザーにプラグインオプションをカスタマイズさせます.一般的には、次の関数で実現できます.
これらの関数には、
トピックまたはプラグインに設定ページがある場合は、これらのページにアクセスできるユーザーを正しく制御する必要があります.たとえば、トピックオプションページを追加した場合は、
多くのプラグインは依然としてユーザーレベルシステム(0から10までの数字でユーザーの権限を表す)を使用していますが、WordPressはレベルシステムを廃棄しており、これ以上使用されるべきではありません.したがって、パーミッション・システムを使用すると、WordPressがユーザー・レベル・システムをサポートしなくなったことを心配する必要はありません.また、カスタム・パーミッションを追加して使用する場合は、パーミッション・システムしか使用できません.
ユーザーの権限の確認
使用するプラグインやトピックで、ユーザーがブログのデータを変更できるようにする(新しいコンテンツを追加したり、既存のコンテンツを編集したりするなど)場合は、現在のユーザーがこれらのアクションを実行するのに十分な権限を持っているかどうかを検出します.この場合、current_を使用します.user_can()という関数:
この関数は、現在のユーザーが特定の文章に対して何らかの操作を行う権限があるかどうかを確認するためのオプションのパラメータを受け入れることもできます.
もう一つの関数:author_can()は、文章の作成者に一定の権限があるかどうかを確認するために使用できます.
関数
カスタムユーザーロールの追加
プラグインに新しいユーザーロールを追加する必要がある場合があります.たとえば、新しいアルバムプラグインを作成します.ユーザーは写真をウェブサイトに登録してアップロードすることができますが、これらの登録ユーザーがウェブサイト上の他のタイプのコンテンツ(記事やページなど)を追加したり変更したりすることは望んでいません.これを行うには、新しいカスタムユーザーロールを追加することが最善です.
カスタムユーザーロールを追加するために使用される関数は、add_です.role()は、権限のセットを含む新しいユーザーロールを追加します.ここでphoto_という名前を追加します.uploader'のユーザーロール.表示される名前は「Photo Uploader」で、デフォルトの権限は「organize_gallery’:
ユーザーロールを作成した後、ユーザーがアルバムを作成、編集、アップロードすると、
そしてこの役割を与えられたユーザーは
ロールを削除するにはremove_を使用します.role()関数です.たとえば、ユーザーがプラグインをアンインストールすることを決定した場合、プラグインのユーザーがカスタムロールを削除できるようにするオプションがあります.
カスタムユーザー権限の追加
既存のユーザーに権限を追加するにはどうすればいいですか?私たちのアルバムプラグインの例を続けて、作者にも画像をアップロードする権限を持たせたいと思っています.add_を使用することができます.Cap()関数:
WordPressの権限クラス
WordPressのユーザー権限を管理する最も一般的な関数であるチェックと権限の追加、ロールの追加について説明しました.しかし、この記事のタイトルに「究極」という文字が含まれているように、WordPressがロールと権限の背後で動作する3つのクラスと、プラグインで高度な権限管理が可能なインタフェースについて説明します.この3つのクラスは次のとおりです. WP_Roles WP_Role WP_User
この3つのクラスのソースコードは
WP_Rolesクラス
WP_Rolesは一般的なロール管理クラスです.プラグインで使用する場合、新しいオブジェクトをインスタンス化するのではなく、WordPressのデフォルトで作成されたグローバルオブジェクト
我々が上で使用した関数
同様に、この方法を使用してロールを得ることもできます.
また、使用可能なロールのリストを取得することもできます.ロール名とロールの表示名が含まれます.これは,ユーザにインタフェースを提供し,権限割り当てを変更する際に非常に有用である.
最後に、
WP_ロールクラス
これは非常に簡単なクラスで、権限の追加と削除が機能します.
WP_Userクラス
このクラスは、各ユーザーのロールと権限を管理できます.これは、特定の特定のユーザーに複数のロールを割り当てたり、現在のユーザーに特定の権限を追加したりすることができます.
まず、役割と権限を操作するためにユーザー・オブジェクトを取得する必要があります.
ユーザIDまたはユーザ名でユーザオブジェクトを得ることができます.2番目の方法では、1番目のパラメータは空でなければなりません(
ユーザー・オブジェクトが入手されると、現在のロールを変更することなく、このユーザーに別のロールを追加できます.これは、ユーザーが複数のロールを持つことができることを意味します.
ユーザーにロールを設定することもできます.これは、ユーザーが現在のすべてのロールを削除し、新しいロールを割り当てることを意味します.
権限操作には、さまざまな方法があります.
WordPressの役割と権限の概要
以上、WordPressロールと権限に関するすべての知識です.WordPressの強力なユーザーロールと権限管理システムは、複雑なプロジェクトをいつでも作成することができます.
最後に何か問題があったら、メッセージをください.
役割と権限とは?
他のCMSやWebプログラムと同様に、WordPressには、特定のユーザーが何らかの動作を行うのに十分な権限を持っているかどうかを検証するシステムが内蔵されています.WordPressという内蔵システムは、まずユーザーをロール(Role)に分け、各ロールに一定の権限を割り当てるロールと権限システムです.
次は、WordPressのデフォルトのユーザーロールです.
WordPressの役割と権限システムは、ユーザーレベルの方法よりも柔軟で、既存のユーザーロールの追加、削除、再割り当てをサポートし、さらに多くのユーザーロールを追加することができ、システムに組み込まれているユーザーロールを破壊しません.
ユーザー権限とバックグラウンドメニュー
多くのプラグインは、WordPressのバックグラウンドに管理ページを追加し、ユーザーにプラグインオプションをカスタマイズさせます.一般的には、次の関数で実現できます.
//
add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url]);
//
add_submenu_page(parent, page_title, menu_title, capability, file/handle, [function]);
//
add_options_page(page_title, menu_title, capability, handle, [function]);
//
add_management_page(page_title, menu_title, capability, handle, [function]);
//
add_pages_page( page_title, menu_title, capability, handle, [function]);
//
add_posts_page( page_title, menu_title, capability, handle, [function]);
//
add_theme_page( page_title, menu_title, capability, handle, [function]);
これらの関数には、
capability
というパラメータがあります.このパラメータは、ユーザーがメニューを見るために必要な権限を指定するために使用されます.一般的に、その値は、edit_posts
などの権限を表す文字列です.したがって、これらの金額関数を使用してWordPressのバックグラウンドに追加されたメニューと、これらのメニューに関連付けられたページは、指定された権限を持つユーザーのみが表示およびアクセスできます.トピックまたはプラグインに設定ページがある場合は、これらのページにアクセスできるユーザーを正しく制御する必要があります.たとえば、トピックオプションページを追加した場合は、
edit_themes
の権限を使用し、プラグインオプションページを追加した場合は、edit_plugins
の権限を使用します. アクセス権は、もちろん、プラグインおよびトピック・オプション・ページへのアクセスを制御するためにmanage_options
アクセス権を直接使用することもできます.多くのプラグインは依然としてユーザーレベルシステム(0から10までの数字でユーザーの権限を表す)を使用していますが、WordPressはレベルシステムを廃棄しており、これ以上使用されるべきではありません.したがって、パーミッション・システムを使用すると、WordPressがユーザー・レベル・システムをサポートしなくなったことを心配する必要はありません.また、カスタム・パーミッションを追加して使用する場合は、パーミッション・システムしか使用できません.
ユーザーの権限の確認
使用するプラグインやトピックで、ユーザーがブログのデータを変更できるようにする(新しいコンテンツを追加したり、既存のコンテンツを編集したりするなど)場合は、現在のユーザーがこれらのアクションを実行するのに十分な権限を持っているかどうかを検出します.この場合、current_を使用します.user_can()という関数:
if ( current_user_can( $capability ) ) {
// $capability 。
}
この関数は、現在のユーザーが特定の文章に対して何らかの操作を行う権限があるかどうかを確認するためのオプションのパラメータを受け入れることもできます.
// ID $post_ID
current_user_can( 'edit_post', $post_id );
もう一つの関数:author_can()は、文章の作成者に一定の権限があるかどうかを確認するために使用できます.
if ( author_can( $post, $capability ) ) {
// $post $capability
}
関数
author_can
の最初のパラメータは、$postオブジェクト、またはPost IDであってもよい.カスタムユーザーロールの追加
プラグインに新しいユーザーロールを追加する必要がある場合があります.たとえば、新しいアルバムプラグインを作成します.ユーザーは写真をウェブサイトに登録してアップロードすることができますが、これらの登録ユーザーがウェブサイト上の他のタイプのコンテンツ(記事やページなど)を追加したり変更したりすることは望んでいません.これを行うには、新しいカスタムユーザーロールを追加することが最善です.
カスタムユーザーロールを追加するために使用される関数は、add_です.role()は、権限のセットを含む新しいユーザーロールを追加します.ここでphoto_という名前を追加します.uploader'のユーザーロール.表示される名前は「Photo Uploader」で、デフォルトの権限は「organize_gallery’:
add_role( 'photo_uploader', 'Photo Uploader', array( 'organize_gallery' ) );
ユーザーロールを作成した後、ユーザーがアルバムを作成、編集、アップロードすると、
current_user_can( 'organize_gallery' )
を使用して現在のユーザーに権限があるかどうかを確認できます.そしてこの役割を与えられたユーザーは
organize_gallery
しかできません ,しかし、edit_posts
やpublish_posts
はできないので、サイトの他の内容を修正する心配はありません.ロールを削除するにはremove_を使用します.role()関数です.たとえば、ユーザーがプラグインをアンインストールすることを決定した場合、プラグインのユーザーがカスタムロールを削除できるようにするオプションがあります.
remove_role( 'photo_uploader' );
カスタムユーザー権限の追加
既存のユーザーに権限を追加するにはどうすればいいですか?私たちのアルバムプラグインの例を続けて、作者にも画像をアップロードする権限を持たせたいと思っています.add_を使用することができます.Cap()関数:
// "author"
$role = get_role( 'author' );
// "organize_gallery"
$role->add_cap( 'organize_gallery' );
WordPressの権限クラス
WordPressのユーザー権限を管理する最も一般的な関数であるチェックと権限の追加、ロールの追加について説明しました.しかし、この記事のタイトルに「究極」という文字が含まれているように、WordPressがロールと権限の背後で動作する3つのクラスと、プラグインで高度な権限管理が可能なインタフェースについて説明します.この3つのクラスは次のとおりです.
この3つのクラスのソースコードは
wp-includes/capabilities.php
で見つけることができます.ソースコードの注釈は詳しく書かれています.次に、これらのクラスの使用方法をまとめます.WP_Rolesクラス
WP_Rolesは一般的なロール管理クラスです.プラグインで使用する場合、新しいオブジェクトをインスタンス化するのではなく、WordPressのデフォルトで作成されたグローバルオブジェクト
$wp_roles
を直接使用することができます.global
を事前に宣言すれば、どこでも使用できます.global $wp_roles;
我々が上で使用した関数
add_role()
とremove_role()
は実際には$wp_roles->add_role()
と$wp_roles->remove_role()
である を選択します.したがって、$wp_roles
オブジェクトを使用してロールを追加および削除することもできます.たとえば、次のようになります.global $wp_roles;
// , add_role()
$wp_roles->add_role( $role, $display_name, $capabilities )
// , remove_role()
$wp_roles->;remove_role( $role );
同様に、この方法を使用してロールを得ることもできます.
global $wp_roles;
// , get_role()
$wp_roles->get_role( $role );
また、使用可能なロールのリストを取得することもできます.ロール名とロールの表示名が含まれます.これは,ユーザにインタフェースを提供し,権限割り当てを変更する際に非常に有用である.
global $wp_roles;
// $role_name => $display_name
$roles = $wp_roles->get_names();
最後に、
$wp_roles
を使用して権限を追加および削除できます.このオブジェクトには、ほとんどのロールおよび権限操作が含まれます.global $wp_roles;
// $role $cap
$wp_roles->add_cap( $role, $cap );
// $role $cap
$wp_roles->remove_cap( $role, $cap );
//
$wp_roles->add_cap( 'administrator', 'manage_galleries' );
$wp_roles->remove_cap( 'subscriber', 'view_galleries' );
WP_ロールクラス
これは非常に簡単なクラスで、権限の追加と削除が機能します.
//
$role_object = get_role( $role_name );
// $cap
$role_object->add_cap( $capability_name );
// $cap
$role_object->remove_cap( $capability_name );
WP_Userクラス
このクラスは、各ユーザーのロールと権限を管理できます.これは、特定の特定のユーザーに複数のロールを割り当てたり、現在のユーザーに特定の権限を追加したりすることができます.
まず、役割と権限を操作するためにユーザー・オブジェクトを取得する必要があります.
// ID
$user = new WP_User( $id );
//
$user = new WP_User( null, $name );
ユーザIDまたはユーザ名でユーザオブジェクトを得ることができます.2番目の方法では、1番目のパラメータは空でなければなりません(
null
または空の文字列).// ID
$admin = new WP_User( 1 );
//
$admin = new WP_User( null, 'admin' );
ユーザー・オブジェクトが入手されると、現在のロールを変更することなく、このユーザーに別のロールを追加できます.これは、ユーザーが複数のロールを持つことができることを意味します.
$user->add_role( $role_name );
remove_role()
を使用して、ユーザーのロールを削除することもできます.$user->remove_role( $role_name );
ユーザーにロールを設定することもできます.これは、ユーザーが現在のすべてのロールを削除し、新しいロールを割り当てることを意味します.
$user->set_role( $role_name );
権限操作には、さまざまな方法があります.
//
if ( $user->has_cap( $cap_name ) ) {
//
}
//
$user->add_cap( $cap_name );
//
$user->remove_cap( $cap_name );
//
$user->remove_all_caps();
WordPressの役割と権限の概要
以上、WordPressロールと権限に関するすべての知識です.WordPressの強力なユーザーロールと権限管理システムは、複雑なプロジェクトをいつでも作成することができます.
最後に何か問題があったら、メッセージをください.