一年后,一些人的技能有了很大的提高,你看:
Keep_Deleted_Attachment_File::on_load();
/**
* Keep original file when deleting attachments.
*/
class Keep_Deleted_Attachment_File {
static private $file;
static function on_load() {
add_action( \'init\', array( __CLASS__, \'init\' ) );
}
static function init() {
add_action( \'delete_attachment\', array( __CLASS__, \'delete_attachment\' ) );
}
/**
* @param int $post_id attachment being deleted
*/
static function delete_attachment( $post_id ) {
self::$file = get_attached_file( $post_id );
add_filter( \'wp_delete_file\', array( __CLASS__, \'wp_delete_file\' ) );
}
/**
* @param string $file path to file being deleted
*
* @return string|bool no change or boolean false to prevent file deletion
*/
static function wp_delete_file( $file ) {
if ( ! empty( self::$file ) && self::$file == $file ) {
remove_filter( current_filter(), array( __CLASS__, __FUNCTION__ ) );
return false;
}
return $file;
}
}