wp_delete_attachment,wp_delete_file_from_directory和wp_delete_file()不会从服务器删除文件

问题描述 投票:0回答:1

每当保存/更新帖子时,我都会尝试重新生成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附件和文件...

php wordpress delete-file
1个回答
0
投票

解决方案是在生成的PDF与已删除的PDF具有相同名称的情况下,在wp_delete_attachment之后有条件地使用unlink。在那种情况下,不需要删除附件或取消链接,仅需覆盖现有文件。

© www.soinside.com 2019 - 2024. All rights reserved.