Suporte » Plugins » Condicional dentro de condicional

  • Resolvido DellaRovere

    (@dellarovere)


    Olá Pessoal,
    Tenho um site que precesa de 3 menus diferentes:
    1. Acesso Público (aparece quando: não está logado)
    2. Acesso para Assinantes (aparece quando: está logado)
    3. Acesso para Administradores (aparece quando: está logado e é o Admin)

    Estou tentando fazer uma condicional para saber se está logado, e se é o administrador

    Sei que, para saber se está logado uso o is_user_logged_in :

    <?php
    if ( is_user_logged_in() ) {
        echo 'Logado';
    } else {
        echo Não logado';
    }
    ?>

    E para saber se é o admin que está na página uso o : is_admin

    Mas como fazer um elseif com estas duas condicionais?

    Exemplo:

    <?php if( is_admin() ) : ?>
       echo 'Menu3'
    <?php elseif ( is_user_logged_in() ) : ?>
       echo 'Menu2'
    <?php else : ?>
       echo 'Menu1'
    <?php endif; ?>

    Obrigado.

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Tenta isso:

    <?php
    if (is_user_logged_in()) {
        echo "Assinante";
    }
    else if (is_user_logged_in() && is_admin()) {
        echo "Admin";
    }
    else {
        echo "Público";
    }
    ?>

    Os operadores do PHP são esse:

    $a and $b E Verdadeiro (TRUE) se tanto $a quanto $b são verdadeiros.
    $a or $b OU Verdadeiro se $a ou $b são verdadeiros.
    $a xor $b XOR Verdadeiro se $a ou $b são verdadeiros, mas não ambos.
    ! $a NÃO Verdadeiro se $a não é verdadeiro.
    $a && $b E Verdadeiro se tanto $a quanto $b são verdadeiros.
    $a || $b OU Verdadeiro se $a ou $b são verdadeiros.

    Criador do tópico DellaRovere

    (@dellarovere)

    Wallace, Obrigado, mas não funcionou; Continua com o mesmo problema.

    Quando logado, ele não difere Admin de Assinante.

    Ele respeita o “is_user_logged_in()” se está logado executa a primeira regra, ou seja se está logado ele exibe o “Assinante”, caso não está logado usa o else.

    Tentei inverter e deixar a condição “(is_user_logged_in() && is_admin())” antes e daí não importa qual o login ele executa o conteúdo “Admin”, e caso não está logado usa o else.

    Vê isso, aqui funcionou:

    <?php
    if (current_user_can( 'manage_options')){
        echo "Admin";
    }
    else if (is_user_logged_in()) {
        echo "Assinante";
    }
    else {
        echo "Público";
    }
    ?>

    Criador do tópico DellaRovere

    (@dellarovere)

    FUNCIONOU!!! Perfeito!!!

    Muito Obrigado.

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘Condicional dentro de condicional’ está fechado para novas respostas.