Wordpress разрешить редактировать определённую страницу определённому пользователю

Ragnarok
На сайте с 25.06.2010
Offline
226
1003

Сайт на WP, есть каталог компаний. 1 компания -- 1 страница (page).

Нужно как-то разрешить определённому пользователю редактировать страницу его компании.

Перегуглил множество способов, но в основном они предлагают что-то типа "поместить аккаунт в группу Editors и запретить редактировать все остальные страницы" (например, как-то так). Но в таком случае пользователь видит все страницы в админке, это не очень хорошо.

Плагины смог найти тоже только дающие/ограничивающие доступ по ролям, тоже не очень.

Подойдёт решение плагином, либо кодом.

Есть идеи?

//TODO: перестать откладывать на потом
SeVlad
На сайте с 03.11.2008
Offline
1609
#1
Ragnarok:
"поместить аккаунт в группу Editors

Авторы имеют доступ только к своим постам.

Даже если они и будут видеть названия других (тут не помню) - отредактировать они не смогут.

Для более расширенной правки возможностей юзеров используй плаги. Напр URE (рекомендую не править дефолтные роли, а копировать их возможности в свои).

Но вообще для многопользовательских систем нужно использовать спец плагины для управления юзерами. Тогда они вообще ничего не смогут, кроме разрешённого, даже попасть в админку.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
BLIKSSS
На сайте с 11.04.2013
Offline
84
#2

Сам искал такое решение, чтобы показывать автору только его записи и вот код


<?php

function mypo_parse_query_useronly( $wp_query ) {
if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) {
if ( !current_user_can( 'activate_plugins' ) ) {
add_action( 'views_edit-post', 'child_remove_some_post_views' );
global $current_user;
$wp_query->set( 'author', $current_user->id );
}
}
}

add_filter('parse_query', 'mypo_parse_query_useronly' );

/**
* Remove All, Published and Trashed posts views.
*
* Requires WP 3.1+.
* @param array $views
* @return array
*/
function child_remove_some_post_views( $views ) {
unset($views['all']);
unset($views['publish']);
unset($views['trash']);
unset($views['draft']);
unset($views['pending']);
return $views;
}
?>

И в этом https://wp-kama.ru/question/skryt-ot-avtora-prosmotr-chuzhih-kommentariev ответе еще есть код, который не показывает чужие комментарии.

P.s И плагином по ролям пользователей,можно скрыть ненужные вкладки в меню, виджеты и.т.д.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий