Загрузка картинки в WP через php

73
22 февраля 2022, 19:20

Делаю скрипт, который будет загружать картинку в библиотеку медиафайлов. Движок WordPress, но скрипт(самопис), который выполняет загрузку, к движку никакого отношения не имеет.

Я выполняю загрузку картинки, кладу её в папку /wp-content/uploads/.

Далее делаю запись в таблицах: wp_posts и в wp_postmeta.

В таблицу wp_posts записываю имя картинки, то, что это attachment и image/jpeg, - в общем, все то, что присуще картинки (подсмотрел у записи, которую создал сам WordPress при загрузке через админку).

В таблицу wp_postmeta добавляю запись с новым post_id, _wp_attached_file, photo.jpg.

В итоге получается, что картинка на сервере есть, но в медиатеке она отображается без миниатюры:

Буду благодарен за помощь.

Answer 1

Добавлять attachments нужно через спец. функцию wp_insert_attachment. Если добавлять без нее, то WP не нарежет миниатюры сам и тогда не будет превью картинки, как у вас на скрине. Пример загрузки картинок:

$image_url = 'adress img';
$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $image_url );
$filename = basename( $image_url );
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
  $file = $upload_dir['path'] . '/' . $filename;
}
else {
  $file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents( $file, $image_data );
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
  'post_mime_type' => $wp_filetype['type'],
  'post_title' => sanitize_file_name( $filename ),
  'post_content' => '',
  'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
READ ALSO
Как подключить phpQuery к yii2?

Как подключить phpQuery к yii2?

Как подключить библиотеку phpQuery к yii2 через composer? Объясните поподробнее пожалуйста))))) Заранее благодарю за ответ))

158
В чем разница между joinWith() и with() в Yii?

В чем разница между joinWith() и with() в Yii?

При связи таблиц в запросе (Query) joinWith() или with()В чем разница?

91
Помогите разобраться с адресацией PHP

Помогите разобраться с адресацией PHP

Прописал путь к файлу с библиотекой (rb-mysqlphp) в файле который лежит в другой папке на том же уровне/глубине

141