根据日期删除特色图像

时间:2016-04-12 作者:Romulus

我有一个问题,我似乎无法找到解决方案。我正在寻找一种方法来批量删除超过X天的帖子的特色图片。150天是我的目标,但如果我能把它设定为任何时间,那就更好了。

我一直在mySQL中进行这项工作,但对于我有限的regex知识来说,meta\\u值似乎太复杂了,我似乎无法克服它。我需要的是,在超过X天(150个目标)的帖子上的特色图片不再存在;不在代码中,不可见等。。。

现在我正在尝试用占位符替换它。png,但只要特征图像不存在,就没有必要这样做。

有人遇到这样的问题吗?有人克服了吗?有人能帮我克服它吗?

我尝试了一些插件,但没有用。如果你有一个你知道的工作,请让我知道。

必须确保移除的时间仅为150天或更久,而不是最近。

谢谢大家!

p、 我想补充一点,我的总体目标是删除特色帖子和超过150天的帖子图片。当然,我可以从服务器上物理删除文件,但代码仍然存在。我就是不能那样。

下面是我删除帖子图片的步骤。是否可以对其进行修改以安全删除特色图像,或者是否有更好的方法?

(201[0-5]\\/(?:0[1-9]|1[0-2])\\/.*?\\.(?:jpg|png|gif|jpeg)) to be replaced with placeholder.png

1 个回复
SO网友:Myg0t

@罗穆卢斯

既然您使用的是Wordpress,我强烈建议您尽可能多地使用Wordpress的功能。我建议您使用PHP并创建自己的插件或某种可以运行的脚本。有很多教程将为您提供创建简单WordPress插件的基本实现。现在,我将向您介绍一些有用的WordPress函数,这些函数将帮助您朝着正确的方向发展。

viper007bond有一篇帖子。显示以下代码片段的com:

<?php
function last_thirty_days( $where = \'\' ){
    global $wpdb;
    $where .= $wpdb->prepare(" AND post_date > %s", date( \'Y-m-d\', strtotime(\'-30 days\'))
    return $where;
}
add_filter( \'posts_where\', \'last_thirty_days\');
$some_posts = get_posts( array( \'suppress_filters\' => false) );
// Important to avoid modifying other queries
remove_filter( \'post_where\', \'last_thirty_days\');
?>
虽然您必须对这个片段进行一些修改以适应您的问题,但它应该足以作为您的一个良好起点。

准备好帖子列表(位于$some\\u posts中)后,可以循环浏览每个帖子并运行wordpress功能delete_post_meta().

伪示例:

foreach $post in $some_post loop{
   delete_post_meta($post->ID, \'_thumbnail_id\');
}
如果出于某种原因不想使用过滤器,可以使用$allposts = get_posts(\'numberposts=-1&post_type=post&post_status=any\');循环查看所有这些结果,将日期与所需日期进行比较。一旦你找到了一篇写有你要找的日期的帖子delete_post_meta() 就像我之前提到的。

希望这对你有帮助!

我强烈建议使用此wordpress插件快速测试PHP代码:https://wordpress.org/plugins/wordpress-console/它还没有永远更新,但如果你不使用多站点,它仍然可以工作。