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?

dev-jim
quelle

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.

Stephen Harris
quelle
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')) ?>
Osama Elzero
quelle
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] =>
)
Uriahs Victor
quelle
-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?

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