areshin71
Гуру форума
- Регистрация
- 19 Сен 2015
- Сообщения
- 110
- Реакции
- 58
- Автор темы
- #1
Столкнулся с необходимостью закрыть часть контента от неавторизованных пользователей на сайте. Ставить лишний плагин не хотелось бы, который наверняка существует для этой цели.
На просторах Сети нашел вот такой работающий код.
Эту часть нужно добавить в functions.php
А вот этот шорткод в нужное место:
Либо вот этот:
Собственно, помощь нужна в следующем: как изменить код, чтобы условия скрытия/показа работали для конкретных ролей пользователей, например Customer из woocommerce?
Как я понял, работа кода основана на "возможностях" (capability) пользователя, определенных системой для конкретного типа пользователя. Но найти эти "возможности" для типов пользователей woocomerce не смогу.
На просторах Сети нашел вот такой работающий код.
Эту часть нужно добавить в 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 не смогу.