首页 > 解决方案 > 设置按日期和文件名修剪上传文件夹的 Wordpress 功能

问题描述

我们有一个客户用来上传照片的表格。这些照片不会在网站上的任何地方使用,而是存储在 Wordpress Uploads 文件夹中的一个文件夹中。正如你所料,这个文件夹变得相当大,所以我们目前手动修剪它。Wordpress 在图片上传时,会生成多个版本的图片,我们具体使用 1024x768 的版本。

我一直在考虑设置一个每周运行一次的 WP-Cron 作业,它会自动为我们修剪。按日期和文件名。特别是超过 15 天的任何内容以及文件名中包含“1024x768”的任何内容。

我目前有一个管理 WP-Cron 作业的插件,并且只需要执行 php。这是我尝试过的:

$files = glob(ABSPATH . UPLOADS . "/formidable/9/*");
$now   = time();

foreach ($files as $file) {
  if (is_file($file)) {
    if ($now - filemtime($file) >= 60 * 60 * 24 * 15) { // 15 days
      wp_delete_file($file);
    }
  }
}

我还没有为文件名匹配而烦恼,因为即使只是修剪任何超过 15 天的文件也可能足以降低磁盘使用率。我不知道该怎么做。尽管我怀疑我可以通过特定的全局定义来实现这一点。当谈到 PHP 时,我是一名 hack 开发人员,所以这是经过大量谷歌搜索和其他东西之后。

编辑:是的,我失败了,我说要定义比 AND 文件名更早的文件名,而它应该是所有文件名中包含该文件名的文件。我想保留的唯一文件是 15 天内,文件名中包含 1024x768。

标签: phpwordpress

解决方案


$files = glob(ABSPATH . UPLOADS . "/formidable/9/*");
$now   = time();

foreach ($files as $file) {
  if (is_file($file)) {
    if ($now - filemtime($file) >= 60 * 60 * 24 * 15 // 15 days
            || preg_match('#1024x768#', $file)) {
      wp_delete_file($file);
    }
  }
}

编辑:如果不清楚,我添加preg_match('#1024x768#', $file)了与您描述的文件匹配的文件。preg_match 在匹配时返回 true,因此它将匹配那个或时间。


推荐阅读