为什么在以编程方式删除文件后,媒体库中仍有引用?

时间:2018-12-10 作者:user615274

我开发了一个插件,可以通过媒体将文件上传到上传文件夹。如果文件不符合x条件,则会处理该文件。该过程将中止,文件将被删除。

以这种方式调用unlink时,删除是有效的

if ($counter === 0) {
    printMessage(\'No need to process\');

    if (unlink($file)) {
        printMessage(\'File removed\');
    }

    return;
}
在这里$file 是对wp_handle_upload $upload[\'file\']

我的情况是,在验证文件确实已从文件系统中删除后,媒体库中会有一个对它的引用。

enter image description here

谢谢你的评论

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

当您将文件上载到媒体库时,一些数据(主要是元数据,如标题、描述等)存储在数据库中。

因此,如果您使用unlink, 您不会从DB中删除任何行,因此附件在媒体库中仍然可见。

如果要从ML中删除附件,应该使用WP函数。wp_delete_attachment 可能会派上用场。

您可以这样使用它:

<?php wp_delete_attachment( <ID_OF_YOUR_ATTACHMENT> ); ?>

相关推荐