wp_delete_attachment_files() – Deletes all files that belong to the given attachment.

You appear to be a bot. Output may be restricted

Description

Deletes all files that belong to the given attachment.

Usage

$bool = wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file );

Parameters

$post_id
( int ) required – Attachment ID.
$meta
( array ) required – The attachment's meta data.
$backup_sizes
( array ) required – The meta data for the attachment's backup images.
$file
( string ) required – Absolute path to the attachment's file.

Returns

bool True on success, false on failure.

Source

File name: wordpress/wp-includes/post.php
Lines:

1 to 77 of 77
function wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file ) {
  global $wpdb;

  $uploadpath = wp_get_upload_dir();
  $deleted    = true;

  if ( ! empty( $meta['thumb'] ) ) {
    // Don't delete the thumb if another attachment uses it.
    if ( ! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $wpdb->esc_like( $meta['thumb'] ) . '%', $post_id ) ) ) {
      $thumbfile = str_replace( wp_basename( $file ), $meta['thumb'], $file );

      if ( ! empty( $thumbfile ) ) {
        $thumbfile = path_join( $uploadpath['basedir'], $thumbfile );
        $thumbdir  = path_join( $uploadpath['basedir'], dirname( $file ) );

        if ( ! wp_delete_file_from_directory( $thumbfile, $thumbdir ) ) {
          $deleted = false;
        }
      }
    }
  }

  // Remove intermediate and backup images if there are any.
  if ( isset( $meta['sizes'] ) && is_array( $meta['sizes'] ) ) {
    $intermediate_dir = path_join( $uploadpath['basedir'], dirname( $file ) );

    foreach ( $meta['sizes'] as $size => $sizeinfo ) {
      $intermediate_file = str_replace( wp_basename( $file ), $sizeinfo['file'], $file );

      if ( ! empty( $intermediate_file ) ) {
        $intermediate_file = path_join( $uploadpath['basedir'], $intermediate_file );

        if ( ! wp_delete_file_from_directory( $intermediate_file, $intermediate_dir ) ) {
          $deleted = false;
        }
      }
    }
  }

  if ( ! empty( $meta['original_image'] ) ) {
    if ( empty( $intermediate_dir ) ) {
      $intermediate_dir = path_join( $uploadpath['basedir'], dirname( $file ) );
    }

    $original_image = str_replace( wp_basename( $file ), $meta['original_image'], $file );

    if ( ! empty( $original_image ) ) {
      $original_image = path_join( $uploadpath['basedir'], $original_image );

      if ( ! wp_delete_file_from_directory( $original_image, $intermediate_dir ) ) {
        $deleted = false;
      }
    }
  }

  if ( is_array( $backup_sizes ) ) {
    $del_dir = path_join( $uploadpath['basedir'], dirname( $meta['file'] ) );

    foreach ( $backup_sizes as $size ) {
      $del_file = path_join( dirname( $meta['file'] ), $size['file'] );

      if ( ! empty( $del_file ) ) {
        $del_file = path_join( $uploadpath['basedir'], $del_file );

        if ( ! wp_delete_file_from_directory( $del_file, $del_dir ) ) {
          $deleted = false;
        }
      }
    }
  }

  if ( ! wp_delete_file_from_directory( $file, $uploadpath['basedir'] ) ) {
    $deleted = false;
  }

  return $deleted;
}
 

 View on GitHub View on Trac