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

Есть ли условный тег, который позволит мне отображать определенный контент только в том случае, если пользователь НЕ является подписчиком?

Solutions Collecting From Web of "Узнать, если зарегистрированный пользователь не является подписчиком"

<?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

Существует также эквивалент для установок 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 class / object.

Другие участники этого набора

Тогда есть также author_can( $GLOBALS['post'], 'capability' ); , Все эти функции находятся внутри ~/wp-includes/capabilities справа друг от друга.

Когда использовать что?

Теперь, где разница между current_user_can(_FOR_BLOG) и user_can ?

  • user_can() является более новым (начиная с версии 3.1), но требует пользователя как объекта. Таким образом, вы можете использовать его в случаях, когда вы не хотите настраивать таргетинг на текущего пользователя, но на некоторых пользователей.
  • current_user_can_*() очевиден.
  • author_can() позволяет проверять возможности объекта post. Этот объект доступен только для сообщений, которые уже находятся в БД. Таким образом, это главным образом для разрешения / отказа в доступе к определенным функциям сообщения.

Это то, что вы имеете в виду?

 global $userdata; get_currentuserinfo(); if ( $userdata->user_level != 0 )//check user level by level ID { echo 'User is a not Subscriber'; } else { echo 'User is a Subscriber'; } 

Подробнее о ID для разных уровней: http://codex.wordpress.org/Roles_and_Capabilities#User_Levels

Существует также функция current_user_can (), которая позволяет вам обозначать конкретные возможности для большей гибкости. http://codex.wordpress.org/Function_Reference/current_user_can