ホームページ > CMS チュートリアル > &#&プレス > ワードプレスの役割と機能のマスター

ワードプレスの役割と機能のマスター

Christopher Nolan
リリース: 2025-02-16 11:49:08
オリジナル
360 人が閲覧しました

WordPressユーザー管理:役割と権限の詳細な分析

WordPressのユーザー管理システムは、役割と権限に基づいています。役割とは、一意の名前と一連の権限を含むエンティティであり、それぞれがその役割のプラットフォーム固有の機能へのアクセスのレベルを定義します。 WordPressの役割と許可の作業メカニズムを掘り下げましょう。

キーポイント

  • WordPressのユーザー管理は、役割と権限に基づいています。役割には、プラットフォームのさまざまな機能へのアクセスのレベルを役割によって定義するユニークな名前と一連の権限があります。
  • WordPressは、ロールとその権限をカスタマイズするための包括的なAPIを提供します。 add_role()remove_role()add_cap()remove_cap()などの関数を使用して、役割と許可を管理できます。ただし、これらの機能を使用する場合は、データベースアクセスとパフォーマンスに注意を払う必要があります。
  • 役割や権限を扱う際にデータベースの問題を回避する方法はいくつかあります。 1つの方法は、プラグインが有効になっている場合にのみコードをトリガーすることです。register_activation_hook()関数を使用できます。もう1つの方法は、$wp_user_rolesグローバル変数を設定して、WordPressデータベースをバイパスすることです。

シーンメカニズムに戻ります

ロールストレージ

WordPress Codexでデフォルトの役割と許可リストを利用できます。

このリストは、

データベースをwp_optionsテーブルに保存します。

シリアル化wp_user_rolesキーを使用します。

Mastering WordPress Roles and Capabilities 脱介入データは次のとおりです

<code>array(
    'administrator' => array(
        'name'         => '管理员',
        'capabilities' => array(
            'switch_themes'          => true,
            'edit_themes'            => true,
            'activate_plugins'       => true,
            'edit_plugins'           => true,
            'edit_users'             => true,
            // [...]
        )
    ),
    'contributor' => array(
        'name'         => '投稿者',
        'capabilities' => array(
            'delete_pages'           => true,
            'delete_others_pages'    => true,
            'delete_published_pages' => true,
            'delete_posts'           => true,
            // [...]
        )
    ),
    // [...]
);</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このメタデータは、新しいWordPressサイトがインストールされているときに自動的に設定されます。

WordPressが開始されると、

クラスはデータベースからリストをロードします。

WP_Rolesこれは、

フックの間で発生します。 plugins_loaded initユーザーをロールにリンク

にリンクします

WordPressは、

テーブルに保存されている

を使用して、ユーザーを役割にリンクします。 wp_usermeta meta_key

脱介入後、メタデータは次のとおりです

Mastering WordPress Roles and Capabilities WordPressは配列を使用していることに注意してください。ユーザーは一度に1つの役割しか持たないが、後で理由があることを確認します。

また、
<code>array(
    'administrator' => true
)</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

は現在のブログのプレフィックスです。

wp_関数を使用して取得できます)。

マルチサイトインストールでは、ユーザーはさまざまなインスタンスで異なる役割を使用できます。 $GLOBALS['wpdb']->get_blog_prefix()

=&gt;

    =&gt;
  • wp_capabilities =&gt; a:1:{s:13:"administrator";b:1;}
  • wp_10_capabilities a:1:{s:11:"contributor";b:1;}このルールは、
  • テーブルで見た
  • エントリにも適用されます。 wp_15_capabilities

    最後に、wp_user_levelメタデータと役割を見ることができます。

    WordPressの古いバージョンのキャラクターを扱うために使用され、現在は非推奨になっています。

    コアコードで許可を使用

    そこから、WordPressは必要に応じて特定のユーザーの許可を取得することができます。

    WordPressコアコードでは、一部のデフォルトアクセス許可がハードコーディングされています。

    たとえば、

    プラグイン画面が読み込まれると、次のコードを実行して現在のユーザーがプラグインを管理できるかどうかを確認します。

    <code>array(
        'administrator' => array(
            'name'         => '管理员',
            'capabilities' => array(
                'switch_themes'          => true,
                'edit_themes'            => true,
                'activate_plugins'       => true,
                'edit_plugins'           => true,
                'edit_users'             => true,
                // [...]
            )
        ),
        'contributor' => array(
            'name'         => '投稿者',
            'capabilities' => array(
                'delete_pages'           => true,
                'delete_others_pages'    => true,
                'delete_published_pages' => true,
                'delete_posts'           => true,
                // [...]
            )
        ),
        // [...]
    );</code>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    役割は決してハードコードされていません。

    アクセスAPI

    WordPressは、役割を処理するのに役立つ次のグローバル機能を提供します。

    current_user_can()現在のユーザーに必要なアクセス許可があるかどうかを確認します。

    <code>array(
        'administrator' => true
    )</code>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    WP_User::has_cap特定のユーザーが許可を持っているかどうかを確認します。

    <code>if (!current_user_can('activate_plugins'))
    {
        wp_die(__('您没有足够的权限来管理此站点的插件。'));
    }</code>
    ログイン後にコピー
    ログイン後にコピー
    がこの関数を使用していることに気付くことができます。

    current_user_can

    get_editable_roles()編集可能な役割に戻ります。

    このリストは
    <code>add_action('init', function()
    {
        if (current_user_can('install_plugins'))
        {
            echo '您可以安装插件';
        }
        else
        {
            echo '您不能安装插件';
        }
    });</code>
    ログイン後にコピー
    ログイン後にコピー
    フィルターによって上書きされる可能性があるため、この関数に頼ってWebサイトで役割の完全なリストを取得する必要はありません。

    editable_roles関数がまだ

    フックにロードされていないため、

    フックの使用に注意してください。 admin_init init

    get_role()そのナメクジに基づいて

    オブジェクトを取得します。

    WP_Role

    <code>add_action('init', function()   
    {
        $user = get_user_by('slug', 'admin');
        if ($user->has_cap('install_plugins'))
        {
            echo '管理员可以安装插件';
        }
        else
        {
            echo '管理员不能安装插件';
        }
    });</code>
    ログイン後にコピー
    ログイン後にコピー

    WP_Role::has_cap()役割に必要な権限があるかどうかを確認します。

    カスタムAPI
    <code>add_action('admin_init', function()
    {
        $roles = get_editable_roles();
        var_dump($roles);
    });</code>
    ログイン後にコピー
    ログイン後にコピー

    WordPressは、ロールとその権限をカスタマイズするための完全なAPIも提供します。

    add_role()データベースに新しい役割を登録します。

    <code>add_action('init', function()
    {
        $role = get_role('administrator');
        var_dump($role);
    });
    
    // 这将打印:
    // WP_Role 对象
    // (
    //     [name] => administrator
    //     [capabilities] => Array
    //         (
    //             [switch_themes] => 1
    //             [edit_themes] => 1
    //             [activate_plugins] => 1
    //             [edit_plugins] => 1
    //             [...]</code>
    ログイン後にコピー
    ログイン後にコピー

    remove_role()存在する場合は、データベースから必要な役割を削除します。

    <code>add_action('init', function()
    {
        $role = get_role('administrator');
        var_dump($role->has_cap('install_plugins')); // 打印 TRUE
    });</code>
    ログイン後にコピー
    ログイン後にコピー

    WP_Role::add_cap()役割にアクセス許可を追加します。

    これは、コア権限(
    <code>add_action('init', function()
    {
        add_role('plugins_manager', '插件管理员', array(
            'install_plugins',
            'activate_plugins',
            'edit_plugins'
        ));
    });</code>
    ログイン後にコピー

    …)または任意のカスタム文字列(install_plugins)にすることができます。 edit_posts my_awesome_plugin_capプラグインにできるだけ多くのカスタムアクセス許可を登録できます。

    WP_Role::remove_cap()存在する場合は、役割からアクセス許可を削除します。

    <code>add_action('init', function()
    {
        remove_role('plugins_manager');
    });</code>
    ログイン後にコピー

    WP_User::add_role()特定のユーザーに役割を追加します。

    この関数により、同じユーザーの複数の役割を理論的に設定できます。
    <code>add_action('init', function()
    {
        $role = get_role('contributor');
        $role->add_cap('install_plugins');
    });</code>
    ログイン後にコピー

    WordPressバックエンドはユーザーごとに1つの役割のみを表示および管理するため、ユーザーに複数のロールを追加する必要はなく、新しいロールを追加する前に常に

    を使用する必要があります。

    WP_User::remove_role()

    WP_User::remove_role()指定されたユーザーからロールを削除します。

    <code>add_action('init', function()
    {
        $role = get_role('contributor');
        $role->remove_cap('install_plugins');
    });</code>
    ログイン後にコピー

    WP_User::add_cap()特定のユーザーにアクセス許可を追加します。

    <code>array(
        'administrator' => array(
            'name'         => '管理员',
            'capabilities' => array(
                'switch_themes'          => true,
                'edit_themes'            => true,
                'activate_plugins'       => true,
                'edit_plugins'           => true,
                'edit_users'             => true,
                // [...]
            )
        ),
        'contributor' => array(
            'name'         => '投稿者',
            'capabilities' => array(
                'delete_pages'           => true,
                'delete_others_pages'    => true,
                'delete_published_pages' => true,
                'delete_posts'           => true,
                // [...]
            )
        ),
        // [...]
    );</code>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    Mastering WordPress Roles and Capabilities これは、完全な役割を作成せずにユーザーに単一の許可を追加したい場合に非常に便利です。

    WP_User::remove_cap()

    指定されたユーザーからアクセス許可を削除します。

    <code>array(
        'administrator' => true
    )</code>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    WordPress APIのいくつかの問題

    1つの質問とは別に、私たちが見ている関数は見栄えがよくなります:データベースのアクセスとパフォーマンス。

    役割と許可を扱うときに主に焦点を当てているのは、コードをトリガーする必要がある場合です。 これを説明するために、WordPressコアコードを見てみましょう。

    最初に、新しい空のキャラクターを追加したい:

    以下は、
    <code>if (!current_user_can('activate_plugins'))
    {
        wp_die(__('您没有足够的权限来管理此站点的插件。'));
    }</code>
    ログイン後にコピー
    ログイン後にコピー
    関数の最初の数行です(実際には

    にリダイレクトされています):add_role WP_Roles::add_role

    新しい役割を追加すると、
    <code>add_action('init', function()
    {
        if (current_user_can('install_plugins'))
        {
            echo '您可以安装插件';
        }
        else
        {
            echo '您不能安装插件';
        }
    });</code>
    ログイン後にコピー
    ログイン後にコピー
    関数は1回実行され、何もしません。

    add_role次に、新しく作成された役割にアクセス許可を追加したいとします:

    wordpress 4.2.2の関数は次のとおりです。
    <code>add_action('init', function()   
    {
        $user = get_user_by('slug', 'admin');
        if ($user->has_cap('install_plugins'))
        {
            echo '管理员可以安装插件';
        }
        else
        {
            echo '管理员不能安装插件';
        }
    });</code>
    ログイン後にコピー
    ログイン後にコピー

    オブジェクトを更新しますが、新しいアクセス許可が既に登録されている場合でも、コードが実行されるたびにデータベースが更新されることもわかります。 WP_Role::add_cap() これは、パフォーマンスを気にする場合、各ページがロードされているときにカスタムロールとアクセス許可について記述するすべてのコードが実行されないことを意味します。

    <code>add_action('admin_init', function()
    {
        $roles = get_editable_roles();
        var_dump($roles);
    });</code>
    ログイン後にコピー
    ログイン後にコピー
    solution

    $this->rolesこれらのデータベースの問題を回避する方法はいくつかあります。 プラグインを使用してアクティブ化します

    WordPressを使用すると、プラグインの著者は、バックエンドでプラグインが有効になっているときに

    関数を使用してコードをトリガーできます。

    サンプルプラグインを作成しましょう:

    このコードは、プラグインがWebサイトで有効になっている場合にのみ1回実行されます。

    さて、このソリューションはプラグインのアクティベーションと非アクティブ化に依存することを覚えておく必要があります。

    register_activation_hook()プラグインがすでに生産されている場合、または更新がプッシュされたときに再アクティベートが省略された場合はどうなりますか?

    実際、このソリューションはデータベースにも依存しており、コードをプッシュするときに追加のステップが必要です。

    <code>add_action('init', function()
    {
        $role = get_role('administrator');
        var_dump($role);
    });
    
    // 这将打印:
    // WP_Role 对象
    // (
    //     [name] => administrator
    //     [capabilities] => Array
    //         (
    //             [switch_themes] => 1
    //             [edit_themes] => 1
    //             [activate_plugins] => 1
    //             [edit_plugins] => 1
    //             [...]</code>
    ログイン後にコピー
    ログイン後にコピー
    WordPressデータベースをバイパス

    場合によっては適切に機能する非公開ソリューションもあります。

    オブジェクトがWordPressが起動したときにデータベースから役割をロードする最後のWordPressコアコードを見てみましょう。

    WordPressは、データベースからデータを取得する前に

    グローバル変数をチェックします。

    設定されている場合、WordPressはコンテンツを使用し、変数をfalseに設定することにより、データベースの使用をブロックします。

    新しい制限された管理者の役割のみを維持して、試してみましょう:

    WP_Roles

    バックエンドをロードするとき、それは私たちのカスタムロールの定義を保持していることがわかります:
    <code>add_action('init', function()
    {
        $role = get_role('administrator');
        var_dump($role->has_cap('install_plugins')); // 打印 TRUE
    });</code>
    ログイン後にコピー
    ログイン後にコピー

    Mastering WordPress Roles and Capabilities このソリューションはデータベースの問題を解決しますが、他の問題を紹介する場合があります。

    ネイティブAPIを使用したプラグインは適切に機能しない場合があります。
    • 変更したくない役割であっても、各役割の定義を手動で設定する必要があります。
    • ただし、これは、静的な役割のカスタムリストを必要とするカスタムWordPressアプリケーションを構築する場合の実行可能なソリューションである可能性があります:

    ロール定義は、コードでバージョンにすることができます。

      環境に新しいコードを吐くと、定義が自動的に更新されます。
    • データベースの問題をもう考慮する必要はありません。
    • 結論
    • この記事では、WordPressでの役割と許可の使用の概要を紹介します。

    その完全なAPIにより、私たちが望むほとんどすべてを行うことができますが、データベースとの関係は依然として主な問題です。

    プラグインとテーマを開発する際には、これを念頭に置いておく必要があります。

    WordPressの役割を管理する方法についてどう思いますか?あなたのフィードバックを楽しみにしています!

    WordPressの役割と権限の習得に関するよくある質問

    WordPressのデフォルトのユーザーロールは何ですか?それらの許可は何ですか?

    WordPressには、スーパー管理者、管理者、編集者、著者、貢献者、サブスクライバーの6つのデフォルトユーザーロールがあります。各役割には、特定の許可セットがあります。たとえば、スーパー管理者は、複数のサイトのすべての管理機能にアクセスできます。管理者は、単一のサイトですべての管理タスクを実行できます。編集者は、他のユーザーの投稿を含む投稿を公開および管理できます。著者は、自分の投稿を投稿および管理できます。貢献者は自分の投稿を書いて管理できますが、投稿することはできません。加入者はプロファイルのみを管理できます。

    WordPressに新しいユーザーロールを追加する方法は?

    WordPressに新しいユーザーロールを追加するには、

    関数を使用できます。この関数は、役割、表示名、および許可配列の3つのパラメーターを受け入れます。たとえば、「custom_role」と呼ばれる新しい役割を追加し、投稿を読み取り、編集する許可を得るには、次のコードを使用できます。

    add_role()WordPressでユーザーの役割を削除する方法は?

    WordPressでユーザーの役割を削除するには、add_role( 'custom_role', __('自定义角色'), array( 'read' => true, // 可以读取帖子 'edit_posts' => true, // 可以编辑帖子 ) );関数を使用できます。この関数は、1つのパラメーターを受け入れます。役割。たとえば、以前に追加された「custom_role」を削除するには、次のコードを使用できます。

    WordPressのユーザーロールにアクセス権を追加する方法は? remove_role()

    WordPressのユーザーロールにアクセス権を追加するには、関数を使用できます。この関数は、役割が許可を持っているかどうかを示す許可とブール値の2つのパラメーターを受け入れます。たとえば、「publish_posts」許可を「custom_role」に追加するには、次のコードを使用できます。

    $role = get_role('custom_role'); $role->add_cap('publish_posts', true);

    WordPressのユーザーロールからアクセス許可を削除する方法は?

    WordPressのユーザーロールからアクセス許可を削除するには、関数を使用できます。この関数は、パラメーター:許可を受け入れます。たとえば、「custom_role」から「publish_posts」許可を削除するには、次のコードを使用できます。 remove_cap()

    $role = get_role('custom_role'); $role->remove_cap('publish_posts'); WordPressでデフォルトのユーザーロールを変更する方法は?

    WordPressでデフォルトのユーザーロールを変更するには、WordPressダッシュボードの[genters]に移動します。新しいユーザーのデフォルトロールで、ドロップダウンメニューからデフォルトとして設定するロールを選択します。

    WordPressで複数のロールをユーザーに割り当てる方法は?

    WordPressは、デフォルトで複数のロールをユーザーに割り当てることをサポートしていません。ただし、複数のロールなどのプラグインを使用してこれを行うことができます。プラグインをインストールしてアクティブにすると、ユーザーのプロフィールページから複数のロールをユーザーに割り当てることができます。

    WordPressのユーザーロールに基づいてコンテンツアクセスを制限する方法は?

    WordPressのユーザーロールに基づいてコンテンツアクセスを制限するには、メンバーなどのプラグインを使用できます。このプラグインを使用すると、Webサイト上の特定のコンテンツにアクセスできる役割を制御できます。

    WordPressでカスタムアクセス許可を作成する方法は?

    WordPressでカスタムアクセス許可を作成するには、

    関数を使用できます。この関数は、役割が許可を持っているかどうかを示す許可とブール値の2つのパラメーターを受け入れます。たとえば、「manage_custom」という名前のカスタム許可を「custom_role」に追加するには、次のコードを使用できます。

    add_cap()

    WordPressのユーザーに特定の権限があるかどうかを確認する方法は?

    $role = get_role('custom_role'); $role->add_cap('manage_custom', true); WordPressのユーザーに特定のアクセス許可があるかどうかを確認するには、関数を使用できます。この関数は、パラメーター:許可を受け入れます。たとえば、現在のユーザーが「manage_custom」許可を持っているかどうかを確認するには、次のコードを使用できます。

    すべての写真は、元の形式と場所を保持しています。 current_user_can()

以上がワードプレスの役割と機能のマスターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート