Alterar postagens programadas para publicação

Eu escrevi a seguinte function para alterar as postagens agendadas para publicar (eu tenho cerca de 1000 delas). Quando eu executo o código abaixo, a mudança de data, mas o status não …

Alguém pode esclarecer essa questão?

Este é o código que estou usando agora:

/* 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('Ymd H:i:s', time() - (3600 * $counter)); change_post_status($pid, 'publish', $newdate); // echo 'TITLE: '.get_the_title() // .' TIME:'.date('Ymd H:i:s', time()-(3600 * $counter)).'
'; $counter++; } }

Toda a coisa “uma hora antes” que eu fiz com a data está ok – as postagens do “futuro” estão realmente atualmente com uma data de ontem, mas ainda têm status agendado na lista de postagens.

Solutions Collecting From Web of "Alterar postagens programadas para publicação"

Ok … então, ao tentar transformar uma publicação futura em uma publicação publicada, você precisa se lembrar de definir “post_date_gmt” e não apenas o “post_date” até a data desejada.

Graças ao @gmazzap que me ajudou a chegar lá …
aqui é um exemplo de trabalho baseado na minha pergunta

 /* 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('Ymd H:i:s', time() - (3600 * $counter)); change_post_status($pid, 'publish', $newdate); // echo 'TITLE: '.get_the_title() .' TIME:'.date('Ymd H:i:s', time()-(3600 * $counter)).'
'; $counter++; } }