programing

Wordpress wp_delete_attachment 파일을 미리 정의된 사용자 지정 폴더에서 삭제하도록 합니다.

newstyles 2023. 4. 4. 21:10

Wordpress wp_delete_attachment 파일을 미리 정의된 사용자 지정 폴더에서 삭제하도록 합니다.

고객이 표준 Wordpress 업로드 폴더(wp-content/upload-assets) 이외의 폴더에 파일을 업로드할 수 있는 커스텀 투고 타입을 작성했습니다.이 파일들은 표준 wp-content/uploads 폴더와는 별도로 처리되어야 하며 이것이 우리가 사용할 수 없는 이유입니다.

define( 'UPLOADS', 'mycustomfolder' );

wp-config.displays에 포함되어 있습니다.

대신 업로드 폴더를 일시적으로 wp-content/upload-assets로 변경할 때 사용합니다.

add_filter('upload_dir', 'my_upload_dir');
$uploaded_file = wp_handle_upload($_FILES['xxxx_image'], $upload_overrides);
remove_filter('upload_dir', 'my_upload_dir');

특정 게시물에서 모든 첨부 파일을 삭제하기 위해 사용합니다.

add_filter('upload_dir', 'my_upload_dir');
$attachments = get_posts( array(
            'post_type'      => 'attachment',
            'posts_per_page' => -1,
            'post_status'    => 'any',
            'post_parent'    => $pid
) );

foreach ( $attachments as $attachment ) {
   if ( false === wp_delete_attachment( $attachment->ID, true ) ) {
      echo 'Attachment could not be deleted.';
   }
}
remove_filter('upload_dir', 'my_upload_dir');

wp_delete_medition도 디스크에서 모든 관련 파일을 삭제해야 하지만 파일이 커스텀 폴더(wp-content/medule)에 있기 때문에 작동하지 않습니다.

my_upload_dir 함수의 코드는 다음과 같습니다.

function my_upload_dir($upload) {
    $upload['subdir']   = '';
    $upload['basedir']  = WP_CONTENT_DIR;
    $upload['baseurl']  = WP_CONTENT_URL;
    $upload['path']     = $upload['basedir'] . '/upload-assets';
    $upload['url']      = $upload['baseurl'] . '/upload-assets';
    return $upload;
}

커스텀 wp-content/upload-assets 폴더에 있는 파일을 wp_delete_attachment로 삭제하려면 어떻게 해야 합니까?

안녕하세요 파일을 삭제하려면 이 방법을 사용할 수 있지만 첨부 파일과 관련된 모든 게시 메타 필드, 분류법, 주석 등이 제거되지는 않습니다.

도움이 되었으면 좋겠다

foreach ( $attachments as $attachment ) {
  if ( false === wp_delete_attachment( $attachment->ID, true ) ) {
    $file = get_attached_file( $attachment->ID );
    $file = str_replace( "uploads", "upload-assets", $file);
     wp_delete_file( $file );
   }
 }

이 코드를 테스트하지 않았지만 작동하기를 바랍니다.

현재 질문의 도메인에 머무르면 "get_attached_file" 필터를 사용하여 삭제할 파일의 경로를 가져오기 위해 사용되는 파일 경로 문자열을 직접 변경할 수 있습니다.특히 이 기능을 기능에 추가합니다.php

function sr_update_uploads_directory( $file )
{
    return str_replace( "uploads", "upload-assets", $file) // Change path to upload-assets from uploads
}
add_filter( 'get_attached_file', 'sr_update_uploads_directory' );

지금은 테스트할 시간이 없습니다.그러니 양해 부탁드립니다.도움이 됐으면 좋겠다.:)

언급URL : https://stackoverflow.com/questions/38117115/make-wordpress-wp-delete-attachment-delete-files-from-a-pre-defined-custom-folde