通过上传文件夹删除图像,但不从媒体库中删除

时间:2017-12-14 作者:Coltvant

我编写了一个插件,允许用户上传。zip文件,如果该文件已经在uploads文件夹中,它将删除内容,在那里上载新的zip文件,然后解压缩。

插件可以正常工作,但我注意到,每次我上传文件时,它都会保留在媒体库中,即使它已从uploads文件夹中删除。因此,uploads文件夹可能为空,但它仍显示在媒体库中。以下是替换文件的代码:

 //first, check if there\'s an existing directory
      if (file_exists($upload_dir . "PDF-archive")){
          //if the directory exists, delete all the files inside
            $file_names = glob($upload_dir . "PDF-archive/*");
            foreach ($file_names as $files){
              if (is_file($files)){
                unlink($files);
                }
              }
          }
      else {
       //if directory doesn\'t exist, create a new one
         $pdf_archive_dir = $temp[\'basedir\'];
         $pdf_archive_dir = $pdf_archive_dir . \'/PDF-archive\';
         wp_mkdir_p($pdf_archive_dir);
       }
      //directory is created and empty, now add files and unzip them
      rename($uploaded_file_path, $new_file_path); //move zip files into new directory
      unzip_zips($uploaded_file_name); //unzips the uploaded file
      }
我假设媒体库保存到数据库。。。有没有办法确保它也被删除?就像我说的那样,它可以工作,但客户端每天都会添加一个新的zip文件,所以我希望避免媒体库中有50多个条目,即使它们不存在于uploads文件夹中。

旁注:我对这方面还很陌生,所以如果您看到我的代码有问题,我将非常感谢您的反馈。谢谢

1 个回复
最合适的回答,由SO网友:David Sword 整理而成

Wordpress将媒体库保存在_posts 表-您将看到post_type 属于attachment 用于媒体库项目。你会注意到guid 行中的值,这是媒体项的默认URL。

虽然unlink()\'如果要删除文件,可以创建文件的完整URL。然后在简单的数据库查询中使用该完整URL($wpdb) 声明WHERE guid = \'$thefullURL\'. 这将返回该行,您将能够获得ID 媒体库项目的。

具有ID 您可以使用Wordpress的wp_delete_post() (这将从库中删除_postmeta 行话)

结束