the_date() nu funcționează

18 mai 2012, 00:07:54
Vizualizări: 35.9K
Voturi: 24

Folosesc WordPress 3.2 și am făcut o interogare de postări astfel:

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

Apoi încerc să afișez data acestei postări pe care am interogat-o astfel:

<?php echo the_date(); ?>

Îmi afișează titlul postării, extrasul și permalinkul dar nu și data. Care credeți că este problema. Sunt sigur că e ceva destul de stânjenitor.

Iată codul din fișierul meu template pentru pagina video:

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

Aici încerc să pun interogarea într-o buclă:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Video Recent</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">Vizionează Acum</a></p>
<?php endwhile; else: ?>
<p><?php _e('Ne pare rău, nicio postare nu corespunde criteriilor.'); ?></p>
<?php endif; ?>

the_date() nu a funcționat dar the_title() și alte funcții au funcționat. Apropo, acest lucru mi-a schimbat interogarea în the_post() care nu este ceea ce doresc. Vreau să interoghez cel mai recent video așa cum am făcut mai sus în buclă.

Apropo, am folosit funcția the_date mai devreme în pagină și a funcționat. Ar putea fi aceasta problema? Iată codul de dinainte de cel cu care am avut probleme.

<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
Toate răspunsurile la întrebare 5
3
65

Vezi această notă specială despre utilizarea `the_date`

NOTĂ SPECIALĂ: Când există mai multe articole pe o pagină publicate în ACEEAȘI ZI, the_date() afișează data doar pentru primul articol (adică prima instanță a the_date()). Pentru a repeta data pentru articolele publicate în aceeași zi, ar trebui să utilizați Template Tag the_time() sau get_the_date() (începând cu versiunea 3.0) cu un șir de format specific datei. Utilizați pentru a adăuga data setată în interfața de administrare.

  1. Utilizezi query_posts care afectează variabilele globale
  2. Afișezi o funcție care deja printează în browser

    • De fapt, faci asta pentru toate tag-urile de template.
    • Schimbă echo the_date(); în: echo get_the_date('F j, Y');
    • Elimină echo-ul din tag-urile de template care deja afișează în browser sau utilizează funcțiile alternative care returnează valoarea.
  3. Utilizează o nouă instanță WP_Query sau get_posts în loc de query_posts

  4. Citește Codex-ul. Acesta explică cum să utilizezi aceste funcții și este foarte util :)

18 mai 2012 00:47:16
Comentarii

get_the_date() mi-a rezolvat problema, dar acum get_the_date() din sidebar.php nu mai funcționează.

zachdyer zachdyer
18 mai 2012 01:06:53

Încă o victimă a query_posts

Chris_O Chris_O
18 mai 2012 01:07:55

Acum funcționează, dar a trebuit să folosesc tag-urile echo. De aceea nu a mers în sidebar.php.

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

the_date() afișează data doar dacă aceeași dată nu a fost afișată anterior.
Nu, acest comportament nu este consistent cu alte funcții similare. Dar așa funcționa în strămoșul WordPress, b2/cafelog, iar compatibilitatea retroactivă întotdeauna are prioritate față de logică ... :)

Pentru a afișa data întotdeauna, folosește get_the_date()

<?php echo get_the_date(); ?>

sau

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

NUUUUUUUUUUUUUUUUUUUU. Acum funcția get_the_date din bara laterală nu mai funcționează. Ce s-a întâmplat acolo?

zachdyer zachdyer
18 mai 2012 01:00:22

Vezi răspunsul lui Cris_O și nu folosi query_posts(). :)

fuxia fuxia
18 mai 2012 01:04:18

Folosești query_posts care îți strică variabilele globale. Vezi răspunsul meu mai jos.

Chris_O Chris_O
18 mai 2012 01:04:36
1

Cred că acest cod ar trebui rulat în interiorul condiției while( have_posts() ):

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

Cum pot afișa doar data postării? Asta e tot ce vreau să fac? Am interogat doar un singur post.

zachdyer zachdyer
18 mai 2012 00:12:51
1

Trebuie să inițializați bucla pentru ca anumite funcții să funcționeze. Toate aceste funcții listează, pe pagina lor din codex, că nu vor funcționa corect în afara buclei.

18 mai 2012 00:21:36
Comentarii

Nu, asta nu funcționează. Am postat codul cu ceea ce am făcut în postare.

zachdyer zachdyer
18 mai 2012 00:27:44
0
// Acest lucru nu va afișa data în toate cazurile
the_date( 'F d, Y' );

// Acest lucru va afișa data în toate cazurile
the_time( 'F d, Y' );
24 iun. 2016 12:54:19