Образ библиотеки Wordpress Media не имеет размера файла - PullRequest
0 голосов
/ 26 июня 2019

У меня есть два сайта, Сайт 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);
...