私は新しいユーザーロール(例えばクライアントロール)を追加するプラグインを開発しています。この役割は今のところ管理者役割を拡張するだけです。
add_role(
'client',
__('Client'),
get_role('administrator')->capabilities
);
今私はクライアント機能を更新してinstall_plugins
機能を削除するプラグインの新しいバージョンをリリースするつもりはありません。
役割は永続的なので、私はadd_role
を更新することはできません。
私の質問は、カスタムロールを管理し、その機能を更新する方法を教えてください。
私の頭の上では、次のようなことができるはずです。
$role = get_role( 'client' );
if ( $role && $role->has_cap( 'install_plugins' ) ) {
// Role not updated yet, so update it.
$role->remove_cap( 'install_plugins' );
}
get_role()
は成功するとWP_Role
オブジェクトを返し、WP_Role::remove_cap()
はWP_Roles::remove_cap()
を呼び出します。これはデータベース内のオプションを直接更新します。 $role->has_cap()
チェックは、コードが2回実行されていないことを確認します。
init
にフックされた関数でこれを実行すれば十分です。
理想的にはあなたのプラグイン用に データベースバージョンオプション があるでしょう。これはプラグインの更新ごとに一回だけコードを実行するために使用できます。そうでなければ、誰かが手動でinstall_plugins
機能をあなたのロールに再び追加するたびにあなたのコードは再び実行されます。それは必ずしも悪いわけではありませんが、防ぐことができます:-)
コード参照: