在wordpress中指定天数后自动删除已发布的帖子

在wordpress中指定天数后自动删除已发布的帖子,wordpress,Wordpress,我计划建立一个报纸网站(日报)。我正在WP上建立网站 现在,根据我的客户的要求,新闻条目(本例中为WP帖子)需要在30天后从WP DB中完全删除。他们甚至不需要这方面的存档,因为他们不希望数据库膨胀。相反,他们将保留本地系统中文件/帖子的计划备份,但希望WP完成从WP安装/DB中删除这些帖子 有可能吗?如果是,如何在WP上执行此操作。您确定需要WordPress吗?强迫WordPress进入这样一个持续的过程似乎太复杂了 我建议将下面的SQL语句放在一个作业中(比如一个.php文件),其余的将由

我计划建立一个报纸网站(日报)。我正在WP上建立网站

现在,根据我的客户的要求,新闻条目(本例中为WP帖子)需要在30天后从WP DB中完全删除。他们甚至不需要这方面的存档,因为他们不希望数据库膨胀。相反,他们将保留本地系统中文件/帖子的计划备份,但希望WP完成从WP安装/DB中删除这些帖子


有可能吗?如果是,如何在WP上执行此操作。

您确定需要WordPress吗?强迫WordPress进入这样一个持续的过程似乎太复杂了

我建议将下面的SQL语句放在一个作业中(比如一个.php文件),其余的将由它自己处理

DELETE FROM wp_posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);
从发布日期

更新

使用WordPress调度功能,我们可以提供类似于cron的基于时间的移除后的调度。这不是一个真正的cron工作,因为它只在用户访问站点30天后删除我们的帖子,而不是在30天后删除我们的帖子。然而,这是我们通过WordPress得到的最接近的结果,在这种情况下,结果是一样的。将以下内容添加到functions.php或插件文件中

/**
 * Add monthly interval to the schedules (since WP doesnt provide it from the start)
 */
add_filter('cron_schedules','cron_add_monthly');
function cron_add_monthly($schedules) {
$schedules['monthly'] = array(
  'interval' => 2419200,
  'display' => __( 'Once per month' )
);
return $schedules;
}
/**
 * Add the scheduling if it doesnt already exist
 */
add_action('wp','setup_schedule');
function setup_schedule() {
  if (!wp_next_scheduled('monthly_pruning') ) {
    wp_schedule_event( time(), 'monthly', 'monthly_pruning');
  }
}
/**
 * Add the function that takes care of removing all rows with post_type=post that are older than 30 days
 */
add_action( 'monthly_pruning', 'remove_old_posts' );
function remove_old_posts() {
  global $wpdb;
  $wpdb->query($wpdb->prepare("DELETE FROM wp_posts WHERE post_type='post' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);"));
}
/**
*将每月间隔时间添加到计划中(因为WP从一开始就不提供)
*/
添加过滤器(“cron_计划”、“cron_添加_每月”);
函数cron\u add\u每月($schedules){
$schedules['monthly']=数组(
“间隔”=>2419200,
'显示'=>\('每月一次')
);
返回$时间表;
}
/**
*如果计划不存在,请添加该计划
*/
添加行动(“wp”、“设置计划”);
功能设置\u时间表(){
如果(!wp_next_scheduled('monthly_prunning')){
wp_计划_事件(时间(),“每月”,“每月修剪”);
}
}
/**
*添加一个函数,该函数负责删除post_type=post超过30天的所有行
*/
添加操作(“每月修剪”、“删除旧帖子”);
函数删除旧的帖子(){
全球$wpdb;
$wpdb->query($wpdb->prepare(“从wp_posts中删除,其中post_type='post'和post_date
您可以安装WP post expirator,并将其默认设置为您发布后将被删除的天数。它的工作与可湿性粉剂自动也

谢谢您的回复。是的,他们想把它放在WP上,因此,他们不会在一段时间后保留很多帖子的副本。来问我的问题-如果我把这句话放在wp的帖子里,它会不会连页面都删除?我只想要这些帖子(确切地说是WP博客帖子),因为他们想把这些帖子用作他们的新闻项目。如果我在这里错了,请给我指点一下……完全正确。我用post类型更新了查询,并将其包装在通过WordPress的调度函数中。更新了上面的答案。再次感谢您的代码。但是,是否也需要包含在调度函数中?我的意思是,将以下代码单独放在
function.php
中不行吗<代码>添加操作(“每月修剪”、“删除旧帖子”);函数remove_old_posts()。但是现在你突然对你网站上的每一个访问者都有一个数据库调用,这会(而且会)让它慢下来很多。我建议反对。哦,非常感谢。。我一定听你的话。只要一个简单的问题。。客户可能会要求将间隔时间从30天改为25天左右。我可以只更改间隔30天的声明吗?不幸的是,过期后的声明似乎被放弃了。