• Resolvido Dhony

    (@dhony)


    Senhores, pretendo exibir o nome dos autores de um site de notícias da seguinte forma:

    quando for assinado por algum repórter:

    Esse é apenas um título da Notícia
    por Dhony Silva

    quando for da redação:

    Esse é apenas um título da Notícia
    Da Redação

    Tentei fazer usando a tag condicional is_author dessa forma:

    <?php if (is_author('redacao')) { // onde 'redacao' é o slug do usuário Da Redação
         echo "<p>".the_author()."</p>";
         } else {
         echo "<p>Por ".the_author()." </p>";
         }
    ?>

    mas ele está retornando assim:
    Esse é apenas um título da Notícia
    por Da Redação
    Da Redação

    no caso eu preciso que apareça apenas um autor.

    alguém pode me ajudar?

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • Por este pedaço de codigo ta ok, deveria funcionar.

    Vc pode colocar o restante do codigo do seu arquivo para ver se tem mais alguma coisa?

    []’s
    Rafael Cirolini
    http://www.geniusdeveloper.com.br

    Criador do tópico Dhony

    (@dhony)

    Vou colocar o loop inteiro dessa chamada de notícias

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    <p class="retranca"><?php $Retranca = get_post_meta($post->ID, 'Retranca', true); ?><?php echo $Retranca; // Chama a Retranca da noticia ?></p>
    <p class="data_single"><?php the_time('d \d\e F \d\e Y'); ?></p>
    <h2><?php the_title(); ?></h2>
    
    <!-- PARTE QUE ESTÁ COM PROBLEMA -->
    <?php if (is_author('redacao'))
    {
    echo "<p>".the_author()."</p>";
    } else {
    echo "<p>Por ".the_author()." </p>";
    } ?>
    
    <div class="entry">
    <?php the_content(); ?>
    <p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?></p>
    </div>
    </div>
    <?php comments_template(); ?>
    <?php endwhile; else: ?>
    <p>Sorry, no posts matched your criteria.</p>
    <?php endif; ?>

    Dhony,
    tenta usar ‘get_the_author()’ ao invés de ‘the_author()’, pois o segundo já imprime na tela o texto. Isso não explica o porque está duplicando mas acho que vale a pena tentar.

    Criador do tópico Dhony

    (@dhony)

    Marcelo,

    inseri o ‘get_the_author()’. Não entendi muito bem como deveria fazer mas fiz assim:

    <?php if (is_author('redacao'))
    {
    echo "<p>".get_the_author('redacao')."</p>";
    } else {
    echo "<p>Por ".the_author()." </p>";
    } ?>

    Continua duplicando assim
    Esse é apenas um título da Notícia
    por Da Redação
    Da Redação

    Acredito que o problema está na condicional.

    Ajuda aí 😉

    Dhony,
    você tem razão o problema está na condicional também. O ‘is_author()’ funciona para os templates, ou seja, apenas quando for o endereço das publicações do author, por exemplo: dominio.ext/?author=1 ou dominio.ext/author/redacao

    O ‘get_the_author()’ e ‘the_author()’ fazem a mesma coisa, mas o ‘the_author()’ imprime o resultado (echo) e o ‘get_the_author()’ retorna o resultado.

    Testa esse código:

    <?php if ( 'Reporter' == get_the_author() ) {
    echo "<p>" . get_the_author() . "</p>";
    } else {
    echo "<p>Por " . get_the_author() . " </p>"; } ?>

    Abraço.

    Criador do tópico Dhony

    (@dhony)

    Ok Marcelo.

    A solução que nós encontramos:

    <?php if ( 'redacao' == get_the_author_login() ) { // observe o get_the_author_login()
    echo "<p>" . get_the_author() . "</p>";
    } else {
    echo "<p>Por " . get_the_author() . " </p>"; } ?>

    A reposta agora quando o autor for “redacao” é:
    Esse é apenas um título da Notícia
    Da Redação

    E quando for qualquer outro autor será:
    Esse é apenas um título da Notícia
    Por Dhony Silva

    Valeu Marcelo.

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