web-dev-qa-db-ja.com

ユーザーが自分のページだけを編集し、他のユーザーには誰も編集できないようにする

私たちは現在約50ページを持っていて、そのうちの1ページ(bob、rob、smithなど)が1ページしか編集できないようにしたいのです。たとえば、bobとsmithにはそれぞれ独自のページがあります。 bobがsmithのページを編集できるようにしたくありません。私はボブがボブのページを編集できるようにしたいだけです。彼が他のページを見ることができるかどうか私は気にしない。ユーザーの役割を見てみると、現時点でこれを実行する方法はありません。グローバル規模でアクセスを制限する方法を確認しているだけです。

ユーザーごとの編集アクセスを制限するためのプラグイン、または特定のページの編集にロールを制限し、ロールごとに1人のユーザーを追加するだけのプラグインはありますか。または私が逃したデフォルト設定でこれをする方法がありました。

7
zealeus

Role Scoper プラグインはこれを可能にします。

0
Milo

これをテンプレートのfunctions.phpファイルに追加して、ユーザーが作成したページを編集したりメディアを管理したりできるようにすることができます。単に$user_id(すなわち27)を指定してください。

function add_theme_caps() {
    // to add capability to $user_id
    $user = new WP_User( $user_id );
    $user->add_cap( 'edit_pages' );
    $user->add_cap( 'edit_published_pages' );
    $user->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );

Wordpressの管理ページから特定のユーザーを編集するときに、URLから特定のユーザーの$user_idを見つけることができます。

Wordpressの機能 の全リストを見てください。

contributorロールを持つすべてのユーザーが作成したページを変更できるように、組み込みロールcontributorを変更する場合は、次のようにします。

function add_theme_caps() {
    // to add capability to the role `contributor`
    $role = get_role( 'contributor' );
    $role->add_cap( 'edit_pages' );
    $role->add_cap( 'edit_published_pages' );
    $role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );
9
Brendan Nee

ロールスコープは非常に強力ですが、これではやり過ぎです。 BobとSmithがAuthorの役割(デフォルトの役割の1つ)を持つように設定した場合、それらは自分の投稿を編集することしかできません。

4
Adam Rice

単にWPテーブルを編集することもできます。 phpAdminがもっと早く使えるようになったようです。

表は

wp_usermeta

User_idを検索し、以下の値を変更します。

wp_capabilities

そしてそれを次のように設定します。

a:4:{s:11:"contributor";b:1;b:1;s:10:"edit_pages";b:1;s:20:"edit_published_pages";b:1;s:12:"upload_files";b:1;}

私は http://www.unserialize.me/ を、シリアライゼーションが正しいことを確認するのに役立つと思いました(そして他のサイトもあると思います)。

0
Fred Andrews