the_date () nie działa

20

Korzystam z wordpress 3.2 i napisałem zapytanie w następujący sposób:

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

Następnie próbuję powtórzyć datę tego postu, w ten sposób zapytałem.

<?php echo the_date(); ?>

Daje mi tytuł postu, fragment i bezpośredni link, ale bez daty. Jak myślisz, na czym polega problem. Jestem pewien, że to coś krępującego.

Oto kod w moim pliku szablonu strony wideo:

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

Tutaj próbuję umieścić zapytanie w pętli:

<?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 () nie działało, ale the_title () i inne funkcje działały. Przy okazji zmieniłem moje zapytanie na the_post (), czego nie chcę. Chcę zapytać o najnowsze wideo, tak jak zrobiłem ponad pętlą.

Nawiasem mówiąc, użyłem wcześniej funkcji na stronie i działało. Czy to może być problem? Oto przed kodem, z którym miałem problem.

<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
źródło

Odpowiedzi:

51

Zobacz tę specjalną notatkę na temat korzystania z `the_date '

UWAGA SPECJALNA: Gdy na stronie opublikowanej w TYM SAMYM Dniu jest wiele postów, the_date () wyświetla tylko datę pierwszego postu (to znaczy pierwszego wystąpienia the_date ()). Aby powtórzyć datę postów opublikowanych tego samego dnia, należy użyć tagu szablonu the_time () lub get_the_date () (od 3.0) z ciągiem formatu specyficznym dla daty. Użyj, aby dodać datę ustawioną w interfejsie administratora.

  1. Używasz query_postsktóre zepsują globały
  2. Wywołujesz funkcję, która jest już drukowana w przeglądarce

    • W rzeczywistości robisz to dla wszystkich tagów szablonów.
    • Zmień echo the_date();na:echo get_the_date('F j, Y');
    • Usuń echo ze znaczników szablonu, które są już drukowane w przeglądarce lub użyj alternatywnych funkcji zwracających wartość.
  3. Użyj nowego WP_Querylub get_postszamiastquery_posts

  4. Przeczytaj Kodeks. Mówi ci, jak korzystać z tych wszystkich funkcji i jest bardzo pomocny :)

Chris_O
źródło
1
get_the_date () naprawił mój problem, ale teraz mój sidebar.php get_the_date () jest zepsuty.
zachdyer
1
Kolejna ofiaraquery_posts
Chris_O
Okej, teraz działa, ale musiałem użyć znaczników echa. Dlatego nie działało w moim sidebar.php.
zachdyer
17

the_date()drukuje datę tylko wtedy, gdy ta sama data nie była wcześniej drukowana .
Nie, to nie jest zgodne z innymi podobnymi funkcjami. Ale tak to działało w przodku WordPress b2 / cafelog , a zgodność wsteczna zawsze przebija logikę… :)

Aby wydrukować datę, zawsze używaj get_the_date()

<?php echo get_the_date(); ?>

lub

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
fuxia
źródło
NOOOOOOOOOOOOOOOOOOOO. Teraz mój boczny pasek get_the_date jest zepsuty. Co tam się stało?
zachdyer
1
Zobacz odpowiedź Cris_O i nie używajquery_posts() . :)
fuxia
Twoje korzystanie z query_posts, które łamie twoje globale. Zobacz moją odpowiedź poniżej.
Chris_O
0

Myślę, że należy to uruchomić w ramach while( have_posts() )warunkowego:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
źródło
Jak powiedzieć tylko datę posta? To wszystko, co chcę zrobić? Zapytałem tylko o jeden post.
zachdyer
0

Aby niektóre funkcje działały, musisz zainicjować pętlę. Wszystkie te funkcje wskazują na stronie kodeksu, że nie będą działały poprawnie poza pętlą.

mor7ifer
źródło
Nie, to nie działa. Umieściłem kod tego, co zrobiłem w poście.
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
źródło