Categorieën bekijken

Alle berichten opnieuw opslaan

1 min leestijd

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 $offset te 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');

Mogelijk gemaakt door BetterDocs