the_date () no funciona

20

Estoy usando wordpress 3.2 e hice una publicación de consulta como esta:

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

Luego trato de hacer eco de la fecha de esta publicación que pregunté así.

<?php echo the_date(); ?>

Me da el título de la publicación y el extracto y el enlace permanente, pero no la fecha. Cuál crees que es el problema. Estoy seguro de que es algo bastante vergonzoso.

Aquí está el código en mi archivo de plantilla para la página de video:

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

Aquí trato de poner la consulta en un bucle:

<?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 () no funcionó pero the_title () y otras funciones funcionaron. Por cierto, esto cambió mi consulta a the_post (), que no es lo que quiero. Quiero consultar el último video como hice arriba del bucle.

Por cierto, utilicé la función de fecha anterior en la página y funcionó. ¿Podría ser el problema? Aquí está antes del código con el que tuve un 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
fuente

Respuestas:

51

Vea esta nota especial sobre el uso de `the_date '

NOTA ESPECIAL: Cuando hay varias publicaciones en una página publicada bajo el MISMO DÍA, the_date () solo muestra la fecha de la primera publicación (es decir, la primera instancia de the_date ()). Para repetir la fecha de las publicaciones publicadas el mismo día, debe usar la etiqueta de plantilla the_time () o get_the_date () (desde 3.0) con una cadena de formato de fecha específica. Use para agregar la fecha establecida en la interfaz de administración.

  1. Estás usando query_postsqué atornilla las glóbulos
  2. Está haciendo eco de una función que ya se imprime en el navegador

    • Realmente lo estás haciendo para todas tus etiquetas de plantilla.
    • Cambiar echo the_date();a:echo get_the_date('F j, Y');
    • Elimine el eco de sus etiquetas de plantilla que ya se imprimen en el navegador o use las funciones alternativas que devuelven el valor.
  3. Use uno nuevo WP_Queryo en get_postslugar dequery_posts

  4. Lee el Codex. Te dice cómo usar todas estas funciones y es muy útil :)

Chris_O
fuente
1
get_the_date () solucionó mi problema pero ahora mi sidebar.php get_the_date () está roto.
zachdyer
1
Otra víctima dequery_posts
Chris_O
Está funcionando ahora, pero tuve que usar las etiquetas de eco. Por eso no funcionó en mi sidebar.php.
zachdyer
17

the_date()imprime la fecha solo si la misma fecha no se imprimió antes .
No, eso no es consistente con otras funciones similares. Pero así es como funcionó en el ancestro b2 / cafelog de WordPress , y la compatibilidad con versiones anteriores siempre triunfa sobre la lógica ... :)

Para imprimir la fecha siempre use get_the_date()

<?php echo get_the_date(); ?>

o

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
fuxia
fuente
NOOOOOOOOOOOOOOOOOOOO. Ahora mi barra lateral get_the_date está rota. Que pasa alli
zachdyer
1
Vea la respuesta de Cris_O y no la usequery_posts() . :)
fuxia
Estás usando query_posts que está rompiendo tus globales. Vea mi respuesta a continuación.
Chris_O
0

Creo que está destinado a ejecutarse dentro del while( have_posts() )condicional:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
fuente
¿Cómo digo la fecha de la publicación? ¿Eso es todo lo que quiero hacer? Solo pregunté una publicación.
zachdyer
0

Debe inicializar el bucle para que ciertas funciones funcionen. Todas estas funciones enumeran, en su página de códice, que no funcionarán correctamente fuera del bucle.

mor7ifer
fuente
No, eso no funciona. Publiqué el código de lo que hice en la publicación.
zachdyer
-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
fuente