Wie erhalte ich das Datum der Veröffentlichung außerhalb der Schleife?


8

Ich muss das Veröffentlichungsdatum des Beitrags herausziehen, damit der Beitrag automatisch abläuft. Die Sache ist, ich kann nicht das richtige Veröffentlichungsdatum bekommen.

Hier ist mein Code:

 global $wpdb;

$post_ids = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_status ='publish'" );

foreach($post_ids as $id){

      $postdate = get_the_date("Y-m-d",$id ); //here is what I can figure out
       .......
      ......etc
}

Wenn ich das $ postdate wiedergebe, wird ein falsches Datum angezeigt. Nicht das Datum, das in der Tabelle wp_posts vorhanden ist.

Wie kann ich das Datum richtig bekommen?

Antworten:


15

get_the_datemuss innerhalb der Schleife verwendet werden. Für den Einsatz außerhalb der Schleife get_the_time.

$posts = get_posts(array('numberposts'=>-1)); //Get all published posts
foreach ($posts as $post){
    echo get_the_time('Y-m-d', $post->ID); //Echos date in Y-m-d format.
}

Ersetzen Sie 'Y-m-d'in diesem Beispiel durch, get_option('date_format')da hierdurch das Datum gemäß Ihrer Datumsformateinstellung in wp-admin angezeigt wird.


Ich habe auch versucht, die Zeit abzurufen, aber mir trotzdem das falsche Datum gegeben.
— Dev-Jim

1
Und Sie geben die Post-ID weiter? get_the_timeist die richtige Funktion, um hier zu verwenden.
— Stephen Harris

1
Außerdem sollten Sie hier keine benutzerdefinierte SQL-Abfrage verwenden. Verwenden Sie get_postsund dann, wenn Sie nur die IDs extrahieren möchten, verwenden Siewp_list_pluck
— Stephen Harris

Ich aktualisiere den post_status basierend auf dem Veröffentlichungsdatum. Gibt es eine andere Möglichkeit, den Status zu aktualisieren? Bisher scheint mir die SQL-Abfrage der einfachste Weg zu sein.
— Dev-Jim

1
@ DavidHobs behoben :)
— Stephen Harris

1

Einige moderne Seelen

Lösung Eins

<?php echo get_the_date('j F Y', get_the_ID()) ?>

Lösung Zwei

<?php the_time(get_option('date_format')) ?>

0

Sie können hierfür get_post () oder get_post_field () verwenden , beide arbeiten außerhalb der Schleife.

$post_object = get_post($id);
$post_date = date( 'F jS, Y', strtotime( $post_object->post_date ) );

Eine vollständige Liste der von get_post zurückgegebenen Werte:

WP_Post Object
(
    [ID] =>
    [post_author] =>
    [post_date] => 
    [post_date_gmt] => 
    [post_content] => 
    [post_title] => 
    [post_excerpt] => 
    [post_status] =>
    [comment_status] =>
    [ping_status] => 
    [post_password] => 
    [post_name] =>
    [to_ping] => 
    [pinged] => 
    [post_modified] => 
    [post_modified_gmt] =>
    [post_content_filtered] => 
    [post_parent] => 
    [guid] => 
    [menu_order] =>
    [post_type] =>
    [post_mime_type] => 
    [comment_count] =>
    [filter] =>
)

-2

versuche es so

$getPosts = $wpdb->get_results( 
"
    SELECT ID, post_date,post_title
    FROM $wpdb->posts
    WHERE post_status = 'publish' 
        AND post_type = 'post'
        ORDER BY ID ASC
    "
);

foreach ( $getPosts as $myPost ) {
    $id = $myPost->post_date;
    echo $myPost->ID.' | '. $myPost->post_title.' | '. get_the_date("Y-m-d",$id ).'<br />';
}

bearbeiten

get_the_time Gibt die Zeit des aktuellen Beitrags zur Verwendung in PHP zurück. Die Uhrzeit wird nicht angezeigt. Verwenden Sie the_time (), um die Uhrzeit eines Beitrags anzuzeigen. Dieses Tag muss in The Loop verwendet werden.

get_the_date Das Template-Tag get_the_date ruft das Datum ab, an dem der aktuelle $ post geschrieben wurde. Im Gegensatz zu the_date () gibt dieses Tag immer das Datum zurück. Ändern Sie die Ausgabe mit dem Filter 'get_the_date'.

Vermisse ich hier etwas?


Bitte führen Sie Ihre Antworten zusammen.
— Fuxia

Zeigen Sie mir bitte, wie man zusammenführt.
— Gembel Intelek

Bearbeiten Sie die erste Antwort und kopieren Sie den Code aus der zweiten hinein. Dann löschen Sie die zweite.
— Fuxia

Ich habe Ihre Codes ausprobiert und kann den Wert von get_the_time abrufen, nicht von get_the_date.
— Dev-Jim
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.