ポストポストを自動期限切れにするには、ポスト発行日を引き出す必要があります。問題は、正しい発行日を取得できないことです。
これが私のコードです:
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テーブルに存在する日付ではありません。
日付を正しく取得するにはどうすればよいですか。
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の日付フォーマット設定に従って日付を表示するためです。
いくつかの現代の魂
解決策1
<?php echo get_the_date('j F Y', get_the_ID()) ?>
解決策2
<?php the_time(get_option('date_format')) ?>
このために 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] =>
)