php - 设置按日期和文件名修剪上传文件夹的 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。
解决方案
$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,因此它将匹配那个或时间。
推荐阅读
- amp-html - AMPHTML - 打印适合打印的页面
- azure - Azure 管道 - 在功能分支上触发
- python-3.x - 如何紧固Knn算法进行实时人脸识别
- database - dolphindb中如何配置每个数据节点的参数?
- javascript - 如果对象属性值符合某些条件,如何在反应中呈现数据?
- pdf - 如何使用 PHP 处理 PDF/A1-a 格式的 PDF
- sql-server - 在 SQL Server 上读取 XML:选择自定义属性
- grafana - 流入 grafana 的 k6 指标
- css - 使一个部分在 Material-ui 中的其他两个部分之间占据完整的空间
- apache-spark - 通过databricks环境将2200万+条记录加载到neo4j数据库中