Om alle berichten in een specifiek post-type opnieuw op te slaan kan je onderstaande code gebruiken.
Opmerkingen:
- Je dient het post-type in te vullen in de variabele
$post_type; - Standaard zit er een limiet in verwerkt, om de functie niet te zwaar te maken, je kan hiermee spelen;
- Wanneer je werkt met het limiet, dien je steeds de
$offsette verhogen nadat een batch succesvol is opgeslagen; - De if-statements bovenaan zorgen ervoor dat de functie alleen draait in de back-end en voor een bepaalde gebruikersnaam.
function update_posts() {
// only run this for admin users
if (! current_user_can('administrator')) :
return;
endif;
if (! is_admin()) :
return;
endif;
if (wp_get_current_user()->user_login != 'dominique') {
return;
}
// for performance it's possible to set a limit on the posts per run
// when using this, you can raise the offset by one after every run.
$offset = 0;
$limit = 10;
$count = 0;
$post_type = null;
$my_posts = get_posts(
array(
'post_type' => $post_type,
'numberposts' => $limit,
'offset' => $offset
)
);
foreach ( $my_posts as $my_post ):
wp_update_post( $my_post );
$posts_done[] = $my_post->ID;
$count++;
//var_dump($count);
// cancel function when $count has reached the same height as $limit
if ($count == $limit) :
// printing IDs of posts that have been precessed
var_dump($posts_done);
return;
endif;
endforeach;
}
add_action('init', 'update_posts');