У меня есть два сайта, Сайт A и Сайт B (оба работают под управлением WordPress). Я работаю над плагином, который будет импортировать данные поста с веб-сайта A через RSS-канал на веб-сайт B и создавать новый пост с этими данными. Пока все работает просто отлично. Тем не мение. По некоторым причинам показанное изображение не полностью импортируется. Он прикрепляется к сообщению (хотя и не отображается), а также присутствует в библиотеке мультимедиа, но не отображает предварительный просмотр, и я также заметил, что данные «размера файла» пусты. Я проверил тот же код на установке localhost, и там работает просто отлично. Изображение загружается и отображается очень хорошо. Только когда я запускаю его на живом домене, изображение не работает.
Оба сайта работают под управлением PHP 7.2 с установленной последней версией WordPress 5.2.2.
Первоначально рекомендуемое изображение было создано из статического URL, но теперь я изменил его, чтобы оно получало изображение из вложения элемента в фиде.
// Assign featured image to post// Add featured image to post
$image_url = $enclosure->get_link();
$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, $post_id);
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);
set_post_thumbnail($post_id, $attach_id);