web-dev-qa-db-ja.com

ポスト発行日をループの外に出すにはどうすればいいですか?

ポストポストを自動期限切れにするには、ポスト発行日を引き出す必要があります。問題は、正しい発行日を取得できないことです。

これが私のコードです:

 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
}

$ postdateをエコーすると、間違った日付で出てきます。 wp_postsテーブルに存在する日付ではありません。

日付を正しく取得するにはどうすればよいですか。

8
dev-jim

get_the_dateはループ内で使用する必要があります。ループの外側では 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.
}

この例の'Y-m-d'get_option('date_format')に置き換えることを検討してください。これは、wp-adminの日付フォーマット設定に従って日付を表示するためです。

14
Stephen Harris

いくつかの現代の魂

解決策1

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

解決策2

<?php the_time(get_option('date_format')) ?>
1
Osama Elzero

このために get_post() または get_post_field() を使用することができます。どちらもループ外で機能します。

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

Get_postによって返される値の全リスト。

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] =>
)
0
Uriahs Victor