亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號