每当保存/更新帖子时,我都会尝试重新生成PDF文件。 PDF文件名会根据post_meta数据而变化,因此,在重新生成和附加pdf之前,保存/更新帖子时,我想从服务器上删除现有的PDF附件和文件。
wp_delete_attachment()可以删除附件,但是即使强制删除文件,该文件仍保留在服务器上。
我也尝试过wp_delete_file_from_directory($ file,$ path);如果删除了文件,则返回true,但是文件保留在服务器上。与wp_delete_file()相同;
似乎唯一起作用的是unlink(),但这会带来另一个问题,因为如果文件名没有更改,unlink()似乎会阻止创建具有相同名称的文件。] >
wp_update_post( $my_post ); if(get_post_status( $post_id ) == "publish"): $existing_PDFs = get_attached_media('application/pdf', $post_id); foreach($existing_PDFs as $pdf): $file = get_attached_file($pdf->ID, true); $path = pathinfo($file, PATHINFO_DIRNAME); wp_delete_file_from_directory( $file, $path); wp_delete_file( $file ); wp_delete_attachment($pdf->ID, true); endforeach; include('generate-single-machine-pdf.php'); endif;
让Wordpress从附件中删除服务器文件的秘密是什么?
每当保存/更新帖子时,我都会尝试重新生成PDF文件。 PDF文件名根据post_meta数据而变化,因此我想删除现有的PDF附件和文件...
解决方案是在生成的PDF与已删除的PDF具有相同名称的情况下,在wp_delete_attachment之后有条件地使用unlink。在那种情况下,不需要删除附件或取消链接,仅需覆盖现有文件。