Есть ли условный тег, который позволит мне отображать определенный контент, только если пользователь НЕ является подписчиком?
источник
Есть ли условный тег, который позволит мне отображать определенный контент, только если пользователь НЕ является подписчиком?
<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
echo 'User is a not Subscriber';
else
echo 'User is a Subscriber';
?>
Еще более простой способ, чем показывал @Brady, это использование current_user_can
:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
Есть также эквивалент для установок MU, названный current_user_can_for_blog
:
global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again on this blog!";
Если вы посмотрите на источник функций для одиночной установки или установки MU , то увидите, что оба они в основном полагаются, wp_get_current_user()
а затем выполняют проверку has_cap
. Теперь, если вы хотите увидеть, откуда взято ограничение, тогда WP_User
класс / объект входит в игру.
Тогда есть также author_can( $GLOBALS['post'], 'capability' );
. Все эти функции находятся ~/wp-includes/capabilities
прямо под друг другом.
Теперь, где разница между current_user_can(_FOR_BLOG)
и user_can
?
user_can()
является более новым (с 3.1), но нуждается в пользователе как объект. Таким образом, вы можете использовать его в тех случаях, когда вы не хотите ориентироваться на текущего пользователя, а на некоторых пользователей.current_user_can_*()
очевидно.author_can()
позволяет вам проверять возможности почтового объекта. Этот объект доступен только для сообщений, которые уже находятся в БД. Так что это в основном для разрешения / запрета доступа к определенным функциям сообщений.
current_user_can()
страницы кодекса AFAIK не изменился.Это то, что вы имеете в виду?
Подробнее об идентификаторах для разных уровней: http://codex.wordpress.org/Roles_and_Capabilities#User_Levels
Существует также функция current_user_can (), которая позволяет вам обозначать определенные возможности для большей гибкости. http://codex.wordpress.org/Function_Reference/current_user_can
источник
To maintain backwards compatibility with plugins that still use the user levels system (although this is very much discouraged), the default Roles in WordPress also include Capabilities that correspond to these levels. User Levels were finally deprecated in version 3.0.