是否将现有发布时间更新为随机时间?

时间:2019-07-08 作者:SpiritFly

我在这里找到了一个将所有帖子的日期随机化为随机日期的代码。以下是某人发布的代码:

<?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 );
  }
}
你会如何做同样的事情,但只随机化时间,而不随机化帖子的日期。因此,帖子应该保持当前的日期不变,但只随机选择发布当天的时间。

我尝试将post\\u日期更改为post\\u时间,并仅将随机的\\u日期更改为时间()。然后,当然将date\\u格式更改为“H:i:s”,但它什么也没做。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

这是负责随机日期的部分:

//* Generate a random date between January 1st, 2015 and now
$random_date = mt_rand( strtotime( \'1 January 2015\' ), time() );
所以你需要改变它。如果只想随机化时间部分,那么这是实现这一点的一种方法:

$random_date = strtotime( date( \'Y-m-d 00:00:00\', strtotime($post->post_date) ) ) + mt_rand(0, 24*60*60); 
该行将:

取发帖日期,只取其中一天的一部分,按时间调整发帖时间,给发帖时间加上随机的秒数,这样发帖时间就会随机化。

相关推荐

使用UPDATE_POST_META和cron作业更新CPT POST META

我正在尝试使用update\\u post\\u meta()定期更新CPT中的自定义字段($company\\u rating)。cronjob已分配并工作。我已经测试了该函数,它打印正确(为了可读性,我在这里缩短了它)。但字段没有更新。。有什么想法吗?function update_company_ratings_test() { global $post; $comp_args = array( \'post_type\'=