the_date() non funziona

18 mag 2012, 00:07:54
Visualizzazioni: 35.9K
Voti: 24

Sto usando WordPress 3.2 e ho fatto una query post in questo modo:

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

Poi ho provato a visualizzare la data del post che ho interrogato in questo modo.

<?php echo the_date(); ?>

Mi mostra il titolo del post, l'excerpt e il permalink ma nessuna data. Quale pensi sia il problema? Sono sicuro che sia qualcosa di abbastanza imbarazzante.

Ecco il codice nel mio file template per la pagina video:

    <?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
    <h2>Video Recente</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">Guarda Ora</a></p>

Qui ho provato a mettere la query in un loop:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Video Recente</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">Guarda Ora</a></p>
<?php endwhile; else: ?>
<p><?php _e('Spiacenti, nessun post corrisponde ai tuoi criteri.'); ?></p>
<?php endif; ?>

the_date() non ha funzionato ma the_title() e altre funzioni hanno funzionato. A proposito, questo ha cambiato la mia query in the_post() che non è quello che voglio. Voglio interrogare l'ultimo video come ho fatto sopra il loop.

A proposito, ho usato la funzione the_date prima nella pagina e ha funzionato. Potrebbe essere questo il problema? Ecco il codice prima di quello con cui ho avuto problemi.

<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>
0
Tutte le risposte alla domanda 5
3
65

Vedi questa nota speciale sull'uso di `the_date'

NOTA SPECIALE: Quando ci sono più articoli nella stessa pagina pubblicati nello STESSO GIORNO, the_date() mostra la data solo per il primo articolo (cioè la prima istanza di the_date()). Per ripetere la data per gli articoli pubblicati nello stesso giorno, dovresti usare il Tag Template the_time() o get_the_date() (dalla versione 3.0) con una stringa di formato specifica per la data. Usa per aggiungere la data impostata nell'interfaccia di amministrazione.

  1. Stai usando query_posts che altera i globali
  2. Stai facendo echo di una funzione che già stampa nel browser

    • In realtà lo stai facendo per tutti i tuoi template tag.
    • Cambia echo the_date(); in: echo get_the_date('F j, Y');
    • Rimuovi l'echo dai tuoi template tag che già stampano nel browser oppure usa le funzioni alternative che restituiscono il valore.
  3. Usa un nuovo WP_Query o get_posts invece di query_posts

  4. Leggi il Codex. Ti spiega come usare tutte queste funzioni ed è molto utile :)

18 mag 2012 00:47:16
Commenti

get_the_date() ha risolto il mio problema ma ora il get_the_date() nel mio sidebar.php non funziona.

zachdyer zachdyer
18 mag 2012 01:06:53

Un'altra vittima di query_posts

Chris_O Chris_O
18 mag 2012 01:07:55

Ora funziona ma ho dovuto usare i tag echo. Ecco perché non funzionava nel mio sidebar.php.

zachdyer zachdyer
18 mag 2012 01:22:13
3
21

the_date() stampa la data solo se la stessa data non è stata già stampata precedentemente.
No, questo comportamento non è coerente con altre funzioni simili. Ma è così come funzionava nell'antenato di WordPress b2/cafelog, e la compatibilità con le versioni precedenti ha sempre la precedenza sulla logica... :)

Per stampare sempre la data utilizza get_the_date()

<?php echo get_the_date(); ?>

oppure

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
18 mag 2012 00:31:29
Commenti

NOOOOOOOOOOOOOOOOOOOO. Ora la mia barra laterale get_the_date è rotta. Cosa è successo?

zachdyer zachdyer
18 mag 2012 01:00:22

Vedi la risposta di Cris_O e non usare query_posts(). :)

fuxia fuxia
18 mag 2012 01:04:18

Stai usando query_posts che sta rompendo i tuoi globali. Vedi la mia risposta qui sotto.

Chris_O Chris_O
18 mag 2012 01:04:36
1

Penso che questo codice debba essere eseguito all'interno del condizionale while( have_posts() ):

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
18 mag 2012 00:09:39
Commenti

Come posso visualizzare semplicemente la data del post? È tutto quello che voglio fare. Ho eseguito la query solo per un post.

zachdyer zachdyer
18 mag 2012 00:12:51
1

È necessario inizializzare il loop affinché determinate funzioni funzionino correttamente. Tutte queste funzioni elencano, nella loro pagina del codex, che non funzioneranno correttamente al di fuori del loop.

18 mag 2012 00:21:36
Commenti

No, non funziona, ho pubblicato il codice di quello che ho fatto nel post.

zachdyer zachdyer
18 mag 2012 00:27:44
0
// Questo non mostrerà la data in tutti i casi
the_date( 'F d, Y' );

// Questo mostrerà la data in tutti i casi
the_time( 'F d, Y' );
24 giu 2016 12:54:19