web-dev-qa-db-ja.com

カスタム機能の追加

それで、これが可能であるかどうか私にはわかりませんが、カスタムCapabilitiesを追加することは可能ですか?

それで、私はWordpressと結びつくグループメッセージアプリケーションを書きました。私は特定のメンバー(私が今質問したオプションを介して設定される)だけがそのようなメッセージを送信できるようにしたいです。 "group_message"などの機能を追加し、それを特定のユーザーに追加します(送信アクセス権を持つ編集者や管理者に限定されないため)。

私は知っています:

wp_current_user()->add_cap()

しかし、私がする必要があるのはそれだけです:wp_current_user() - > add_cap( 'group_message')?

1
Jeremy Dentel

のカスタムロールケーパビリティ (説明とコード)の簡単な例を示しました。ただし、あなたの場合は、ロールではなく特定のユーザーに機能を追加します。

次のコードが、やりたいことの出発点になることがあります。

// The IDs of the `privileged users`
$users = array( ... );

// Required arguments for the user query
$args = array(
    'include' => $users,
    'fields' => 'all_with_meta',
);

// Add the capability to privileged users
foreach ( get_users( $args ) as $user )
    $user->add_cap( 'group_message' );
// Check for the capability
if ( current_user_can( 'group_message') ) {
    // group message stuff
}
// Remove the capability
foreach ( get_users( 'fields' => 'all_with_meta' ) as $user )
    $user->remove_cap( 'group_message' );

今必要なことは、ユーザーIDを取得/提供することです。たとえば、プラグインメニューページにすべてのユーザーを一覧表示し(ある場合)、次にグループメッセージングを実行したいユーザーを選択し、最後にそれらのユーザーに機能を追加することができます。

1
tfrommen