私たちは現在約50ページを持っていて、そのうちの1ページ(bob、rob、smithなど)が1ページしか編集できないようにしたいのです。たとえば、bobとsmithにはそれぞれ独自のページがあります。 bobがsmithのページを編集できるようにしたくありません。私はボブがボブのページを編集できるようにしたいだけです。彼が他のページを見ることができるかどうか私は気にしない。ユーザーの役割を見てみると、現時点でこれを実行する方法はありません。グローバル規模でアクセスを制限する方法を確認しているだけです。
ユーザーごとの編集アクセスを制限するためのプラグイン、または特定のページの編集にロールを制限し、ロールごとに1人のユーザーを追加するだけのプラグインはありますか。または私が逃したデフォルト設定でこれをする方法がありました。
Role Scoper プラグインはこれを可能にします。
これをテンプレートの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' );
ロールスコープは非常に強力ですが、これではやり過ぎです。 BobとSmithがAuthorの役割(デフォルトの役割の1つ)を持つように設定した場合、それらは自分の投稿を編集することしかできません。
単に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/ を、シリアライゼーションが正しいことを確認するのに役立つと思いました(そして他のサイトもあると思います)。