黄聡:WordPressの役割と権限ガイド

20686 ワード

WordPressは2.0バージョンでロールと権限(Roles and Capabilities)システムを導入し、以前のユーザーレベルの方法(User Levels)は廃止された.しかし、多くのプラグインやトピックでは、ユーザーレベルの方法を使用して、ユーザーが設定ページやその他の機能を表示することを制御しています.このガイドでは、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_postspublish_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つのクラスは次のとおりです.
  • WP_Roles
  • WP_Role
  • WP_User

  • この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の強力なユーザーロールと権限管理システムは、複雑なプロジェクトをいつでも作成することができます.
    最後に何か問題があったら、メッセージをください.