Делаю скрипт, который будет загружать картинку в библиотеку медиафайлов. Движок WordPress, но скрипт(самопис), который выполняет загрузку, к движку никакого отношения не имеет.
Я выполняю загрузку картинки, кладу её в папку /wp-content/uploads/
.
Далее делаю запись в таблицах: wp_posts
и в wp_postmeta
.
В таблицу wp_posts
записываю имя картинки, то, что это attachment и image/jpeg, - в общем, все то, что присуще картинки (подсмотрел у записи, которую создал сам WordPress при загрузке через админку).
В таблицу wp_postmeta
добавляю запись с новым post_id, _wp_attached_file, photo.jpg.
В итоге получается, что картинка на сервере есть, но в медиатеке она отображается без миниатюры:
Буду благодарен за помощь.
Добавлять 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 );
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как подключить библиотеку phpQuery к yii2 через composer? Объясните поподробнее пожалуйста))))) Заранее благодарю за ответ))
При связи таблиц в запросе (Query) joinWith() или with()В чем разница?
Прописал путь к файлу с библиотекой (rb-mysqlphp) в файле который лежит в другой папке на том же уровне/глубине