Php 设置Wordpress函数,按日期和文件名修剪上传文件夹

Php 设置Wordpress函数,按日期和文件名修剪上传文件夹,php,wordpress,Php,Wordpress,我们有一个客户用来上传照片的表单。这些照片不会在网站上的任何地方使用,而是存储在Wordpress Uploads文件夹中的一个文件夹中。正如您所料,这个文件夹变得相当大,所以我们目前手动修剪它。Wordpress在上传图片时,会生成多个版本的图片,我们专门使用1024x768版本 我一直在考虑建立一个每周运行一次的WP Cron作业,这样我们就可以自动删除它。按日期和文件名。特别是任何超过15天的文件以及文件名中包含“1024x768”的文件 $files = glob(ABSPATH . U

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

我一直在考虑建立一个每周运行一次的WP Cron作业,这样我们就可以自动删除它。按日期和文件名。特别是任何超过15天的文件以及文件名中包含“1024x768”的文件

$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);
    }
  }
}
我目前有一个插件,用于管理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天的文件,也可能足以降低磁盘使用率。我不知道该怎么做。尽管我怀疑我可以通过一个特定的glob定义来实现这一点。说到PHP,我是一个黑客开发人员,所以这是在大量谷歌搜索和其他东西之后

编辑:是的,我失败了,我说要定义早于和文件名,当它应该是所有的文件,但在名称中的文件。我只想保留15天内的文件,文件名中包含1024x768

$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,因此它将匹配该值或时间。

这将删除超过15天或文件名中没有“1024x768”字符串的图像:

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

foreach ($files as $file) {
  if (is_file($file)) {
    if (
       ( $now - filemtime($file) >= 60 * 60 * 24 * 15 ) // image is 15+ days old
       || strpos( $file, "1024x768" ) === false // image's filename doesn't have "1024x768" in it
    ) {
      wp_delete_file($file);
    }
  }
}

那么,您还想删除文件名中包含“1024x768”的图像,而不考虑其年龄吗?我编辑了我的问题,以反映我的真正意思。很抱歉,像这样的答案不是很有用。你改变了什么?它为什么有效?(在代码本身或答案中添加一些注释,以向未来的访问者解释)。对不起,我的问题搞砸了,我说我想删除这些注释。我真的想删除所有的东西,除了文件名中的文件。