为了账号安全,请及时绑定邮箱和手机立即绑定

wp_delete_attachment,wp_delete_file_from_directory

wp_delete_attachment,wp_delete_file_from_directory

PHP
哈士奇WWW 2022-08-05 18:40:13
每当保存/更新帖子时,我都在尝试重新生成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从服务器中删除文件以及附件的秘诀是什么?
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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


对于更新帖子:


$savePath = trailingslashit($uploads_dir).$new_file_name.'.pdf';


$pdf->Output($savePath, 'F');


$existing_PDF = get_attached_media('application/pdf', $post_id);


foreach($existing_PDF as $pdf):


    $oldPDFID= $pdf->ID;


    $file = get_attached_file($oldPDFID, true);


    $old_file_name = pathinfo($file,PATHINFO_BASENAME);


endforeach;


}


$old_pdf = pathinfo($file,PATHINFO_BASENAME);


#######CREATE PDF ATTACHMENT####

$args = array(

    'post_title' => "$new_file_name",

    'post_content' => '',

    'post_mime_type' => 'application/pdf',

);

$new_file_name = $new_file_name.".pdf";


//DELETE OLD ATTACHMENT

if($new_file_name != $old_file_name):

    wp_delete_attachment($oldPDFID, true);

    unlink($file);

endif;


$pdfID = wp_insert_attachment($args, $savePath, $post_id);


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号