the_date () funktioniert nicht

20

Ich benutze WordPress 3.2 und habe einen Abfrage-Post wie diesen erstellt:

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

Dann versuche ich, das Datum dieses Beitrags, den ich so abgefragt habe, wiederzugeben.

<?php echo the_date(); ?>

Es gibt mir den Titel des Beitrags und den Auszug und den Permalink, aber kein Datum. Was denkst du ist das Problem? Ich bin sicher, es ist etwas ziemlich Peinliches.

Hier ist der Code in meiner Vorlagendatei für die Videoseite:

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

Hier versuche ich die Abfrage in eine Schleife zu setzen:

<?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 () hat nicht funktioniert, aber the_title () und andere Funktionen haben funktioniert. Übrigens hat dies meine Anfrage in the_post () geändert, was nicht das ist, was ich will. Ich möchte das neueste Video wie über der Schleife abfragen.

Übrigens habe ich die Funktion "the_date" früher auf der Seite verwendet und es hat funktioniert. Könnte das das Problem sein? Hier ist der Code, mit dem ich ein Problem hatte.

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

Antworten:

51

Siehe diesen speziellen Hinweis zur Verwendung des `the_date '

BESONDERER HINWEIS: Wenn auf einer Seite unter dem GLEICHEN TAG mehrere Posts veröffentlicht sind, zeigt the_date () nur das Datum für den ersten Post an (d. H. Die erste Instanz von the_date ()). Um das Datum für Beiträge zu wiederholen, die am selben Tag veröffentlicht wurden, sollten Sie das Template-Tag the_time () oder get_the_date () (seit 3.0) mit einer datumsspezifischen Formatzeichenfolge verwenden. Verwenden Sie diese Option, um das in der Administrationsoberfläche festgelegte Datum hinzuzufügen.

  1. Sie verwenden, query_postswas die Globals vermasselt
  2. Sie geben eine Funktion wieder, die bereits im Browser gedruckt wurde

    • Das machen Sie eigentlich für alle Ihre Template-Tags.
    • Ändern Sie echo the_date();zu:echo get_the_date('F j, Y');
    • Entfernen Sie das Echo aus Ihren Vorlagen-Tags, die bereits im Browser gedruckt wurden, oder verwenden Sie die alternativen Funktionen, die den Wert zurückgeben.
  3. Verwenden Sie ein neues WP_Queryoder get_postsanstelle vonquery_posts

  4. Lesen Sie den Kodex. Es zeigt Ihnen, wie Sie all diese Funktionen nutzen und ist sehr hilfreich :)

Chris_O
quelle
1
get_the_date () hat mein Problem behoben, aber jetzt ist meine sidebar.php get_the_date () kaputt.
Zachdyer
1
Ein weiteres Opfer vonquery_posts
Chris_O
Okay, es funktioniert jetzt, aber ich musste die Echo-Tags verwenden. Deshalb hat es in meiner sidebar.php nicht funktioniert.
Zachdyer
17

the_date()druckt das Datum nur, wenn das gleiche Datum zuvor nicht gedruckt wurde .
Nein, das stimmt nicht mit anderen ähnlichen Funktionen überein. Aber so funktionierte es in WordPress ' Vorgänger b2 / cafelog , und Abwärtskompatibilität übertrumpft immer die Logik ... :)

Verwenden Sie zum Ausdrucken des Datums immer get_the_date()

<?php echo get_the_date(); ?>

oder

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
fuxia
quelle
NOOOOOOOOOOOOOOOOOOOO. Jetzt ist meine Seitenleiste get_the_date kaputt. Was ist dort passiert?
Zachdyer
1
Siehe die Antwort von Cris_O und verwende sie nichtquery_posts() . :)
fuxia
Ihre Verwendung von query_posts, die Ihre Globals bricht. Siehe meine Antwort unten.
Chris_O
0

Ich denke, das soll unter folgenden while( have_posts() )Bedingungen ausgeführt werden:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
quelle
Wie sage ich einfach das Datum des Posts? Das ist alles was ich machen will? Ich habe nur einen Beitrag abgefragt.
Zachdyer
0

Sie müssen die Schleife initialisieren, damit bestimmte Funktionen funktionieren. Alle diese Funktionen führen auf ihrer Codex-Seite an, dass sie außerhalb der Schleife nicht ordnungsgemäß funktionieren.

mor7ifer
quelle
Nein, das funktioniert nicht. Ich habe den Code von dem, was ich in der Post getan habe, gepostet.
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
quelle