タイトルが言うように、私は特定のユーザーに対して特定のページへのバックエンドアクセスを制限したいと思います。
45〜50ページのサイトを作成している間に、[ページ]メニューにユーザーが変更/更新できるページのみが表示されていれば、はるかに優れたユーザーエクスペリエンスになると思いました。
私は役に立ちませんでした以下のプラグインを試してみました。 Advanced access managerは機能を持っていますが動作しません/ 3.5.1ではバグがあります。
http://wordpress.org/extend/plugins/advanced-access-managerhttp://wordpress.org/extend/plugins/role-scoperhttp://wordpress.org/ extend/plugins/adminimizehttp://wordpress.org/extend/plugins/s2member
Functions.phpのコードスニペット?
このコードは私にとってはうまく機能するようです(functions.php):
add_filter( 'parse_query', 'exclude_pages_from_admin' );
$user_id = get_current_user_id();
if ($user_id == 2) {
function exclude_pages_from_admin($query) {
global $pagenow,$post_type;
if (is_admin() && $pagenow=='edit.php' && $post_type =='page') {
$query->query_vars['post__not_in'] = array('123','234','345');
}
}
}
それは私にコメントさせないので、私はこれを新しい答えとして加えています。
エラー:
警告: "call_user_func_array()はパラメータ1が有効なコールバックであることを期待しています、>関数 'exclude_pages_from_admin'が見つからないか無効な関数名です".
これは、user_idがチェックされた後にだけ呼び出される関数によるものです。あなたがそのユーザとしてログインしていないのであれば、その関数は存在せず、フィルタはそのエラーを返します。それはその関数を探しているのですが見つけられないからです。
だからそれはする必要があります:
add_filter( 'parse_query', 'exclude_pages_from_admin' );
function exclude_pages_from_admin($query) {
$user_id = get_current_user_id();
if ($user_id == 2) {
global $pagenow,$post_type;
if (is_admin() && $pagenow=='edit.php' && $post_type =='page') {
$query->query_vars['post__not_in'] = array('123','234','345');
}
}
}