Question
How to change the post date to a randomly generated date?
Answer
This is fairly straightforward. What I did was to create a plugin that upon activation get all the posts, loops through them, generates a random date, and updates the post with that date.
<?php
/**
* Plugin Name: WPSE 259750 Random Dates
* Description: On activation, change the dates of all posts to random dates
*/
//* We want to do this only once, so add hook to plugin activation
register_activation_hook( __FILE__ , 'wpse_259750_activation' );
function wpse_259750_activation() {
//* Get all the posts
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any' ) );
foreach( $posts as $post ) {
//* Generate a random date between January 1st, 2015 and now
$random_date = mt_rand( strtotime( '1 January 2015' ), time() );
$date_format="Y-m-d H:i:s";
//* Format the date that WordPress likes
$post_date = date( $date_format, $random_date );
//* We only want to update the post date
$update = array(
'ID' => $post->ID,
'post_date' => $post_date,
'post_date_gmt' => null,
);
//* Update the post
wp_update_post( $update );
}
}