私は次のようなスケジュールされた投稿を公開済みに変更するための関数を書きました(私はそれらのうちの約1000を持っています)。以下のコードを実行すると、日付は変わりますが、ステータスは変わりません。
誰かがこの問題に光を当てることはできますか?
これは私が今のところ使っているコードです:
/* CHANGE PENDING POSTS TO PUBLISHED POSTS */
function change_post_status($post_id, $status, $change_date){
$current_post['ID'] = $post_id;
$current_post['post_status'] = $status;
$current_post['post_date'] = $change_date;
wp_update_post($current_post);
}
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'future',
'orderby' => 'date',
'order' => 'ASC',
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
$counter = 1;
while ($the_query->have_posts()) {
$the_query->the_post();
$pid = get_the_ID();
$newdate = date('Y-m-d H:i:s', time() - (3600 * $counter));
change_post_status($pid, 'publish', $newdate);
// echo 'TITLE: '.get_the_title()
// .' TIME:'.date('Y-m-d H:i:s', time()-(3600 * $counter)).'<br/>';
$counter++;
}
}
私が日付を使ってやったこと「全体の1時間前」は大丈夫です - 「未来」の投稿は現在昨日の日付を持っていますが、それでも投稿リストには予定のステータスがあります。
わかりました...今後の投稿を公開された投稿に変換するときは、 "post_date"だけでなく "post_date_gmt"を希望の日付に設定することを忘れないでください。
私がそこに着くのを助けてくれた@gmazzapのおかげで...
これは私の質問に基づいた実用的な例です
/* CHANGE PENDING POSTS TO PUBLISHED POSTS */
function change_post_status($post_id, $status, $change_date){
$current_post['ID'] = $post_id;
$current_post['post_status'] = $status;
$current_post['post_date'] = $change_date;
$current_post['post_date_gmt'] = $change_date; // ADDED THIS LINE
wp_update_post($current_post);
}
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'future',
'orderby' => 'date',
'order' => 'ASC',
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
$counter = 1;
while ($the_query->have_posts()) {
$the_query->the_post();
$pid = get_the_ID();
$newdate = date('Y-m-d H:i:s', time() - (3600 * $counter));
change_post_status($pid, 'publish', $newdate);
// echo 'TITLE: '.get_the_title() .' TIME:'.date('Y-m-d H:i:s', time()-(3600 * $counter)).'<br/>';
$counter++;
}
}