Помощь Скрытый контент на сайте

areshin71

Гуру форума
Регистрация
19 Сен 2015
Сообщения
110
Реакции
58
Столкнулся с необходимостью закрыть часть контента от неавторизованных пользователей на сайте. Ставить лишний плагин не хотелось бы, который наверняка существует для этой цели.
На просторах Сети нашел вот такой работающий код.
Эту часть нужно добавить в functions.php
Код:
function true_content_by_user_cap( $attr, $content = null ) {
    // массив со значениями по умолчанию, которые будут применяться, если в шорткоде не был указан параметр
    $defaults = array(
        'capability' => 'read'
    );
    extract( shortcode_atts( $defaults, $attr ) );
    if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() ) {
        return $content;
    }
    return ''; // указываем сообщение об ошибке если нужно
}

add_shortcode( 'access', 'true_content_by_user_cap' );
А вот этот шорткод в нужное место:
Код:
[access capability="edit_posts"]

Эта часть контента видна пользователям, которые могут редактировать записи.

[/access]
Либо вот этот:
Код:
[access]

Это сообщение увидят все зарегистрированные пользователи.

[/access]

Собственно, помощь нужна в следующем: как изменить код, чтобы условия скрытия/показа работали для конкретных ролей пользователей, например Customer из woocommerce?
Как я понял, работа кода основана на "возможностях" (capability) пользователя, определенных системой для конкретного типа пользователя. Но найти эти "возможности" для типов пользователей woocomerce не смогу.
 

Fedorchuk

Создатель
Регистрация
25 Май 2019
Сообщения
48
Реакции
18
Сейчас работа основана не на "возможностях", а на правах. Если нужны роли, то функция true_content_by_user_cap должна быть полностью переписана. Маловероятно, что здесь будет кто-то делать заказную разработку. Лучше выбрать плагин из этих - Для просмотра ссылки Войди или Зарегистрируйся
 

Teceract

Постоялец
Регистрация
15 Фев 2009
Сообщения
205
Реакции
115
Не хотелось бы ставить лишний плагин.
Скрытое содержимое доступно для зарегистрированных пользователей!

можно интегрировать в вашу функцию.
и еще функция extract является устаревшей и лучше не использовать в дальнейшем
 

areshin71

Гуру форума
Регистрация
19 Сен 2015
Сообщения
110
Реакции
58
можно интегрировать в вашу функцию.
и еще функция extract является устаревшей и лучше не использовать в дальнейшем
Спасибо за наводку!
Буду пробовать. Хотя, если честно, совсем далек от php кода. Может Вы сможете помочь? Естественно не безвозмездно.
 

Teceract

Постоялец
Регистрация
15 Фев 2009
Сообщения
205
Реакции
115
Спасибо за наводку!
Буду пробовать. Хотя, если честно, совсем далек от php кода. Может Вы сможете помочь? Естественно не безвозмездно.

если брать за основу ваш код, то вот так можно изменить было.
добавил current_user_can( 'manage_options' ) так как без него контент будет показан только прописаным в шорткоде ролям.
 

areshin71

Гуру форума
Регистрация
19 Сен 2015
Сообщения
110
Реакции
58
если брать за основу ваш код, то вот так можно изменить было.
добавил current_user_can( 'manage_options' ) так как без него контент будет показан только прописаным в шорткоде ролям.
Спасибо з помощь! Будем внедрять)
 
Сверху