bp_media_handle_sideload( array $file_array, array $post_data = array() )
This handles a sideloaded file in the same way as an uploaded file is handled by {@link media_handle_upload()}
Description
Parameters
- $file_array
-
(Required) Array similar to a $_FILES upload array
- $post_data
-
(Optional) allows you to overwrite some of the attachment
Default value: array()
Return
(int|object) The ID of the attachment or a WP_Error on failure
Source
File: bp-media/bp-media-functions.php
function bp_media_handle_sideload( $file_array, $post_data = array() ) {
$overrides = array( 'test_form' => false );
$time = current_time( 'mysql' );
if ( $post = get_post() ) {
if ( substr( $post->post_date, 0, 4 ) > 0 ) {
$time = $post->post_date;
}
}
$file = wp_handle_sideload( $file_array, $overrides, $time );
if ( isset( $file['error'] ) ) {
return new WP_Error( 'upload_error', $file['error'] );
}
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
$title = preg_replace( '/\.[^.]+$/', '', basename( $file ) );
$content = '';
// Use image exif/iptc data for title and caption defaults if possible.
if ( $image_meta = @wp_read_image_metadata( $file ) ) {
if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
$title = $image_meta['title'];
}
if ( trim( $image_meta['caption'] ) ) {
$content = $image_meta['caption'];
}
}
if ( isset( $desc ) ) {
$title = $desc;
}
// Construct the attachment array.
$attachment = array_merge( array(
'post_mime_type' => $type,
'guid' => $url,
'post_title' => $title,
'post_content' => $content,
), $post_data );
// This should never be set as it would then overwrite an existing attachment.
if ( isset( $attachment['ID'] ) ) {
unset( $attachment['ID'] );
}
// Save the attachment metadata
$id = wp_insert_attachment( $attachment, $file );
if ( ! is_wp_error( $id ) ) {
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
}
return $id;
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.