Задать вопрос
@sergo573

Как создать файл изображения и загрузить его в библиотеку на wordpress?

Делаю обрезку загружаемого изображения, с использованием jcrop.
Пользователь выбирает область обрезки, нажимает кнопку, файл отправляется на сервер, обрезается, и вот так я получаю обрезанное изображение, и без проблем вывожу его на экран пользователю.
ob_start();
imagejpeg( $img_o, NULL, 100 );
imagedestroy( $img_o );
$i = ob_get_clean();
echo "<img src='data:image/jpeg;base64," . base64_encode( $i )."'>";

Но я хочу это изображение сразу загрузить в библиотеку медиафайлов wordpress...
Пытался так: media_handle_sideload($img_o); и так media_handle_sideload($i);
Получаю ошибку, подскажите в каком направлении копать, или как это можно реализовать?
------
UPD: или другой вопрос, как на php сформировать файл изображения который можно передать в media_handle_sideload() ?
  • Вопрос задан
  • 27 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro Куратор тега WordPress
Python, JS, WordPress, SEO, Bots, Adversting
1. wp_tempnam() - создать временный файл $tmp для его последующей перезаписи из п3.
2. Объявить ассоциативный массив с данными изображения, где среди прочего передать 'name' => basename($tmp),
3. Перезаписать временный файл из п1 данными из п2 - media_handle_sideload(), вернется id уже загруженного изображения в wp.
4. Удалить временный файл п1 - unlink().
5. Зная id уже загруженного изображения на сервер (п3), можно получить его превью (например).

Выглядеть это будет примерно так (грубый пример):
$tmp = wp_tempnam('img');
imagejpeg($img_o, $tmp, 100);
imagedestroy($img_o);

$file_data = [
    'name' => basename($tmp),
    'tmp_name' => $tmp,
];

$id = media_handle_sideload($file_data);
unlink($tmp);

echo wp_get_attachment_image_url($id, 'thumbnail');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы