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
キーを使用します。
脱介入データは次のとおりです
<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
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()
役割に必要な権限があるかどうかを確認します。<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>
これは、完全な役割を作成せずにユーザーに単一の許可を追加したい場合に非常に便利です。
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
次に、新しく作成された役割にアクセス許可を追加したいとします:関数は次のとおりです。 <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
これらのデータベースの問題を回避する方法はいくつかあります。 プラグインを使用してアクティブ化します関数を使用してコードをトリガーできます。
サンプルプラグインを作成しましょう:
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は、データベースからデータを取得する前に
グローバル変数をチェックします。変数をfalseに設定することにより、データベースの使用をブロックします。 WP_Roles
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role->has_cap('install_plugins')); // 打印 TRUE });</code>
ネイティブ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のユーザーロールにアクセス権を追加する方法は?
WordPressのユーザーロールにアクセス権を追加するには、remove_role()
関数を使用できます。この関数は、役割が許可を持っているかどうかを示す許可とブール値の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サイト上の特定のコンテンツにアクセスできる役割を制御できます。関数を使用できます。この関数は、役割が許可を持っているかどうかを示す許可とブール値の2つのパラメーターを受け入れます。たとえば、「manage_custom」という名前のカスタム許可を「custom_role」に追加するには、次のコードを使用できます。
WordPressのユーザーに特定の権限があるかどうかを確認する方法は?add_cap()
$role = get_role('custom_role'); $role->add_cap('manage_custom', true);
WordPressのユーザーに特定のアクセス許可があるかどうかを確認するには、関数を使用できます。この関数は、パラメーター:許可を受け入れます。たとえば、現在のユーザーが「manage_custom」許可を持っているかどうかを確認するには、次のコードを使用できます。 すべての写真は、元の形式と場所を保持しています。
current_user_can()
以上がワードプレスの役割と機能のマスターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

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

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

ホットトピック









