функция
since 2.6.0
media_handle_sideload()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
media_handle_sideload( string[] $file_array, int $post_id, string $desc = null, array $post_data = array() ): int|WP_Error
Описание
Обрабатывает файл, загруженный со стороны (side-loaded), так же, как media_handle_upload() обрабатывает загруженный файл.
Параметры
$file_array
string[]
обязательный
Массив, представляющий массив загрузки $_FILES .
$post_id
int
необязательный
ID записи, с которой связано медиа.
$desc
string
необязательный
= null
Описание файла, загруженного со стороны.
$post_data
array
необязательный
= array()
Данные записи для переопределения.
Возвращаемое значение
int|WP_Error
WP_Error
Исходный код
wp-admin/includes/media.php:464
function media_handle_sideload( $file_array, $post_id = 0, $desc = null, $post_data = array() ) {
$overrides = array( 'test_form' => false );
if ( isset( $post_data['post_date'] ) && substr( $post_data['post_date'], 0, 4 ) > 0 ) {
$time = $post_data['post_date'];
} else {
$post = get_post( $post_id );
if ( $post && substr( $post->post_date, 0, 4 ) > 0 ) {
$time = $post->post_date;
} else {
$time = current_time( 'mysql' );
}
}
$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( '/\.[^.]+/', '', wp_basename( $file ) );
$content = '';
$alt = '';
// Use image exif/iptc data for title and caption defaults if possible.
$image_meta = wp_read_image_metadata( $file );
if ( $image_meta ) {
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 ( trim( $image_meta['alt'] ) ) {
$alt = $image_meta['alt'];
}
}
if ( isset( $desc ) ) {
$title = $desc;
}
// Construct the attachment array.
$attachment = array_merge(
array(
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => $content,
),
$post_data
);
// This should never be set as it would then overwrite an existing attachment.
unset( $attachment['ID'] );
// Save the attachment metadata.
$attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true );
if ( trim( $alt ) ) {
update_post_meta( $attachment_id, '_wp_attachment_image_alt', sanitize_text_field( $alt ) );
}
if ( ! is_wp_error( $attachment_id ) ) {
wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
}
return $attachment_id;
}
История изменений
| Версия | Описание |
|---|---|
| 5.3.0 | The $post_id parameter was made optional. |
| 2.6.0 | Introduced. |

