media_sideload_image() — как загрузить изображение с внешнего URL на сайт через код

Эта функция делает три вещи:

  1. загружает изображение в папку uploads, при этом делая его доступным через админку,
  2. прикрепляет изображение к посту, ID которого указан в параметрах,
  3. возвращает результат либо в виде тега <img>, либо в виде URL уже загруженного изображения.
media_sideload_image( $file, $post_id, $desc = null, $return = 'html' )
$file
(строка) URL изображения для загрузки.
$post_id
(целое число) ID поста, к которому нужно прилепить изображение. 0 — не прилеплять.
$desc
(строка) То, что отправится в заголовок изображения. Если не указано, то заголовок будет взят либо из URL, либо из метаданных изображения.

Заголовок изображения
$return
(строка) Что нужно возвратить функции. Может принимать два значения:

  • src — URL изображения,
  • любая_строка (по умолчанию) — <img> тег.

Что делать, если:

Fatal error: Call to undefined function media_sideload_image() in ... on line 835

Это означает, что функция не определена, скорее всего вы использовали её где-то за пределами админки. Чтобы всё было ок, нужно подключить 3 файла дополнительно, подробнее в примере:

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
 
$file = 'http://nelaprosto.ru/wp-content/uploads/2014/11/VTH8063dQ4U.jpg';
$post_id = 5;
 
$img_tag = media_sideload_image( $file, $post_id, 'Гек' );

Комментарии 2

  • Наталья10 сентября 2015 в 14:09 #

    Если требуется перенести статью с картинками с самописного сайта на сайт вордпресс - этот способ подходит? Или речь идет о другом?

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...