web-dev-qa-db-ja.com

ユーザーごとに機能を管理する簡単な方法はありますか?

私はWordPressサイトを持っていて、そこには何人かの人々(熟練していないクライアント)がユーザーを作成/管理する必要があります。このサイトは複数のカスタム投稿タイプを使用しており、各ユーザーにはそれらの1つまたは複数のcptに対するアクセス許可が割り当てられています。現時点で私はこれを処理する2つの方法を見ます、そして、私はそれらのどれにもとても満足していません。

(1)ユーザーロール:私が4つのカスタム投稿タイプ(A、B、C、D)を持っている場合、私は多くのユーザーロールが必要になります。機能のすべての組み合わせを網羅しています。 (役割A、役割AB、役割ABD ...)。それはクライアントにとって管理するにはあまり便利ではありません。

(2)Capability Management Plugin:ユーザーを管理するのが私なら、 "User Role Editor"のようなプラグインを使います。しかし、それは私の熟練していないクライアントにとっては扱いが非常に複雑であり、システムを台無しにする危険性が高いです。

私が考えているのは、クライアントがカスタム投稿タイプを選択できる単純なチェックボックスを(少なくとも新しいユーザーを作成するときに)持つことです。新しいユーザーはアクセスできるはずです。いいね:このユーザーはcpt AとBとDで何でもすることができます。

これを行う方法はありますか、これはあなたがWordPressでやるべきことでさえありますか?


更新

@RyanLoremIpsumが正しい方向を示していたので、必要なだけの簡単なプラグインを書くことができました。そのように見える:

choose the cpt's a user should be able to access

3
Christoph

ユーザーの機能を管理するために必ずしも役割を割り当てる必要はありません。

まず、カスタム投稿タイプをそれぞれの機能に登録します。 の下のケーパビリティを参照してください。関数リファレンス/ register post type - パラメータ

ユーザ機能の管理

ユーザーの機能を追加または削除するには、 add_cap または remove_cap を使用します。特定のユーザー.

// Add capability to a specific user  
$user = new WP_User( $user_id );  
$user->add_cap( 'can_edit_posts');  

// Remove a capability from a specific user.
$user = new WP_User( $user_id );
$user->remove_cap( 'read_private_posts' );

ユーザーの割り当てられた役割に属さない機能をユーザーに付与できるため、これは便利です。

たとえば、あなたが言っていたように、投稿タイプごとにチェックボックスを含むフォームを作成できます。チェックボックスをオンにするたびに、特定のユーザーIDに、その投稿タイプを登録したときに作成した機能が付与されます。同様に、ボックスをオフにすると機能が削除される可能性があります。

0
iyrin