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

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 までご連絡ください。
WordPress開発のための5つの最高のIDES(およびなぜ)WordPress開発のための5つの最高のIDES(およびなぜ)Mar 03, 2025 am 10:53 AM

WordPress開発に適した統合開発環境(IDE)の選択 10年間、WordPress開発のための多数の統合開発環境(IDE)を調査しました。 自由から商業、基本的なものまで、純粋な品種

OOPテクニックを備えたWordPressプラグインを作成しますOOPテクニックを備えたWordPressプラグインを作成しますMar 06, 2025 am 10:30 AM

このチュートリアルでは、ドリブルAPIを活用して、オブジェクト指向プログラミング(OOP)の原則を使用してWordPressプラグインを構築します。 元の意味と構造を維持しながら、明確さと簡潔さのためにテキストを洗練しましょう。 オブジェクトオリ

WordPressでPHPデータと文字列をJavaScriptに渡す方法WordPressでPHPデータと文字列をJavaScriptに渡す方法Mar 07, 2025 am 09:28 AM

PHPデータをjavaScriptに渡すためのベストプラクティス:wp_localize_scriptとwp_add_inline_scriptの比較 PHPファイルに静的文字列内にデータを保存することが推奨される練習です。 JavaScriptコードでこのデータが必要な場合は、INCORPORAT

WordPressプラグインでPDFファイルを埋め込み、保護する方法WordPressプラグインでPDFファイルを埋め込み、保護する方法Mar 09, 2025 am 11:08 AM

このガイドは、WordPress PDFプラグインを使用して、WordPressの投稿とページにPDFファイルを埋め込み、保護する方法を示しています。 PDFは、カタログからプレゼンテーションまで、さまざまなコンテンツに対してユーザーフレンドリーで普遍的にアクセス可能な形式を提供します。 この方法は

WordPressは初心者にとって簡単ですか?WordPressは初心者にとって簡単ですか?Apr 03, 2025 am 12:02 AM

WordPressは、初心者が簡単に始めることができます。 1.バックグラウンドにログインした後、ユーザーインターフェイスは直感的であり、シンプルなダッシュボードは必要なすべての関数リンクを提供します。 2。基本操作には、コンテンツの作成と編集が含まれます。 WysiWygエディターは、コンテンツの作成を簡素化します。 3.初心者は、プラグインとテーマを介してウェブサイトの機能を拡張でき、学習曲線は存在しますが、練習を通じて習得できます。

なぜWordPressを使用するのはなぜですか?なぜWordPressを使用するのはなぜですか?Apr 02, 2025 pm 02:57 PM

人々は、その力と柔軟性のためにWordPressを使用することを選択します。 1)WordPressは、さまざまなWebサイトのニーズに適した、使いやすさとスケーラビリティを備えたオープンソースのCMSです。 2)豊富なテーマとプラグイン、巨大なエコシステム、強力なコミュニティサポートがあります。 3)WordPressの作業原則は、テーマ、プラグイン、コア関数に基づいており、PHPとMySQLを使用してデータを処理し、パフォーマンスの最適化をサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい