the_date () não está funcionando

20

Estou usando o wordpress 3.2 e fiz um post de consulta como este:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>

Então eu tento ecoar a data deste post que eu perguntei assim.

<?php echo the_date(); ?>

Dá-me o título do post, o trecho e o link permanente, mas sem data. O que você acha que é o problema. Tenho certeza que é algo bastante embaraçoso.

Aqui está o código no meu arquivo de modelo para a página de vídeo:

    <?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
    <h2>Recent Video</h2>
    <h3 class="date"><?php echo the_date(); ?></h3>
    <p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
    <p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>

Aqui eu tento colocar a consulta em um loop:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Recent Video</h2>
<h3 class="date"><?php echo the_date(); ?></h3>
<p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
<p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

the_date () não funcionou, mas the_title () e outras funções funcionaram. A propósito, isso mudou minha consulta para the_post (), que não é o que estou querendo. Quero consultar o vídeo mais recente, como fiz acima do loop.

A propósito, eu usei a função date_ anteriormente na página e funcionou. Esse poderia ser o problema? Aqui está antes do código que eu tive um problema.

<div id="col75" class="firstcol">
    <iframe id="video" src="http://www.youtube.com/embed/videoseries?list=<?php print get_post_meta($post->ID,"playlist_id", true); ?>" width='560' height='350' frameborder="0"></iframe>
    <div id="col25">
        <h2><?php echo get_post_meta($post->ID,"speaker", true); ?></h2>
        <h3 class="date"><?php echo the_date(); ?></h3>
zachdyer
fonte

Respostas:

51

Veja esta nota especial sobre o uso do `the_date '

NOTA ESPECIAL: Quando houver várias postagens em uma página publicada sob o mesmo dia, the_date () exibirá apenas a data da primeira postagem (ou seja, a primeira instância de the_date ()). Para repetir a data das postagens publicadas no mesmo dia, você deve usar a tag de modelo the_time () ou get_the_date () (desde 3.0) com uma sequência de formato de data específica. Use para adicionar a data definida na interface do administrador.

  1. Você está usando o query_postsque estraga os globais
  2. Você está ecoando uma função que já imprime no navegador

    • Você está fazendo isso para todas as suas tags de modelo.
    • Mude echo the_date();para:echo get_the_date('F j, Y');
    • Remova o eco das tags de modelo que já imprimem no navegador ou use as funções alternativas que retornam o valor.
  3. Use um novo WP_Queryou em get_postsvez dequery_posts

  4. Leia o Codex. Ele mostra como usar todas essas funções e é muito útil :)

Chris_O
fonte
11
get_the_date () corrigiu meu problema, mas agora meu sidebar.php get_the_date () está quebrado.
Zachdyer 17/05/12
11
Outra vítima dequery_posts
Chris_O
Ok, está funcionando agora, mas eu tive que usar as tags de eco. É por isso que não funcionou na minha sidebar.php.
Zachdyer 17/05
17

the_date()imprime a data apenas se a mesma data não tiver sido impressa anteriormente .
Não, isso não é consistente com outras funções semelhantes. Mas foi assim que funcionou no ancestral b2 / cafelog do WordPress , e a compatibilidade com versões anteriores sempre supera a lógica… :)

Para imprimir a data sempre use get_the_date()

<?php echo get_the_date(); ?>

ou

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
fuxia
fonte
NOOOOOOOOOOOOOOOOOOOO. Agora minha barra lateral get_the_date está quebrada. O que aconteceu ai?
Zachdyer
11
Veja a resposta de Cris_O e não usequery_posts() . :)
fuxia
Você está usando o query_posts, que está quebrando seus globais. Veja minha resposta abaixo.
21412 Chris_O
0

Eu acho que isso deve ser executado dentro do while( have_posts() )condicional:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
fonte
Como digo apenas a data da postagem? É tudo o que eu quero fazer? Eu apenas perguntei uma postagem.
Zachdyer 17/05/12
0

Você precisa inicializar o loop para que certas funções funcionem. Todas essas funções listam, em sua página de codex, que elas não funcionarão corretamente fora do loop.

mor7ifer
fonte
Não, isso não funciona. Postei o código do que fiz no post.
Zachdyer 17/05
-1
// This won't show date in all cases
the_date( 'F d, Y' );

// This will show date in all cases
the_time( 'F d, Y' );
avi
fonte