it-swarm.com.de

Geplante Posts in "Veröffentlicht" ändern

Ich habe die folgende Funktion geschrieben, um geplante Posts in veröffentlichte zu ändern (ich habe ungefähr 1000 davon). Wenn ich den folgenden Code ausführe, ändert sich das Datum, aber der Status ändert sich nicht ...

Kann jemand etwas Licht in dieses Thema bringen?

Dies ist der Code, den ich derzeit verwende:

/*  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++;
    }
}

Die ganze "eine Stunde vor" Sache, die ich mit dem Datum gemacht habe, ist in Ordnung - die "zukünftigen" Posts haben aktuell ein Datum von gestern, aber noch einen geplanten Status in der Postsliste.

2
Sagive SEO

Ok ... Wenn Sie also versuchen, einen zukünftigen Beitrag in einen veröffentlichten Beitrag umzuwandeln, müssen Sie daran denken, "post_date_gmt" und nicht nur "post_date" auf das gewünschte Datum festzulegen.

Danke an @gmazzap, der mir geholfen hat, dorthin zu gelangen ...
hier ist ein Arbeitsbeispiel, das auf meiner Frage basiert

/*  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++;
    }
}
2
Sagive SEO