Descobrir se o usuário logado não é assinante

8

Existe alguma tag condicional que me permita exibir o conteúdo específico somente se o usuário NÃO for um assinante?

    
por Nasir Zia 31.07.2012 / 09:32

3 respostas

9
<?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';
?>
    
por Brady 31.07.2012 / 10:45
14

Uma maneira ainda mais simples, do que @Brady mostrou a você, é usar current_user_can :

if ( current_user_can( 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again!";

MU

Há também um equivalente para instalações de MU, chamado 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!";

Atrás da cortina

Ao olhar para a fonte das funções para single ou MU instalações , então você verá que ambos dependem basicamente de wp_get_current_user() e, em seguida, faça uma verificação de has_cap . Agora, se você quiser ver de onde vem o limite, WP_User class / objeto entra no jogo.

Outros membros deste conjunto

Depois, há também author_can( $GLOBALS['post'], 'capability' ); . Todas essas funções estão dentro de ~/wp-includes/capabilities , logo abaixo umas das outras.

Quando usar o que?

Agora, onde está a diferença entre current_user_can(_FOR_BLOG) e user_can ?

  • user_can() é o mais novo (desde 3.1), mas precisa do usuário como objeto. Assim, você pode usá-lo nos casos em que não deseja segmentar o usuário atual, mas alguns usuários.
  • current_user_can_*() é óbvio.
  • author_can() permite verificar recursos em um objeto de postagem. Este objeto está disponível apenas para publicações que já estão no banco de dados. Então, é principalmente para permitir / negar o acesso a recursos de postagem específicos.
por kaiser 31.07.2012 / 12:17
-4

É isso que você quer dizer?

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';
}

Mais detalhes sobre os ID's para diferentes níveis: enlace

Existe também a função current_user_can (), que permite denotar recursos específicos para maior flexibilidade. enlace

    
por gArn 31.07.2012 / 10:34