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>

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 :)


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

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;

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ą.


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' );
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.