Не вдалося імпортувати медіа


14

Коли я генерую XML-файл за допомогою [Інструменти> Експорт] і використовую [Інструменти> Імпорт] на іншому веб-сайті WordPress, я отримую "Не вдалося імпортувати медіа" для кожного типу вкладеного повідомлення. І зображення, які не вдалося завантажити, посилаються на попередній сервер, який споживає передачу попереднього сервера ...

Але коли я завантажую "Unit Test" з http://codex.wordpress.org/Theme_Unit_Test, ця проблема не існує. Деякі зображення все ще мають "Не вдалося імпортувати медіа", але це лише 5 із 30 зображень. Вони мають URL-адреси свого власного сервера у своєму XML, але якось [Інструменти> Імпорт] вдається завантажити їх медіа та замінити ці URL-адреси на нові місця (це вже не посилається на гарячу посилання).

У чому полягає хитрість, щоб вона справно працювала без "Не вдалося імпортувати медіа"? Чому навіть "Unit Test" містить кілька повідомлень "Не вдалося імпортувати медіа"?


Оскільки сервер, куди потрібно імпортувати, повинен отримати їх зі старого місця, ви повинні не лише перевірити, чи файли є на старому сервері, але і чи може новий сервер їх отримати. Можливо, щось обмежує вихідні запити. Ви намагалися імпортувати його на інший сервер чи localhost? Боюся, це може бути дуже локалізованою проблемою.
kraftner

1
Станом на WordPress 4.3.1 (можливо, раніше) ви можете визначити IMPORT_DEBUGта встановити його trueдля отримання змістовного зворотного зв’язку замість просто "Не вдалося імпортувати медіа". Я не уявляю, чому це не поведінка за замовчуванням. Це може допомогти звузити вашу проблему, якщо погода буде правильною.
Марк

@Марк, у якому файлі можна встановити IMPORT_DEBUGваріант
kimliv

2
@kimliv: ви хочете , щоб вставити це в WP-config.php в кореневій папці вашого WordPress установки: define ( 'IMPORT_DEBUG', true );.
Марк

Вибачте за нарікання, виникла та сама проблема і на оригінальному веб-сайті, з якого я імпортував, SSL не працював, і xmlURL-адреси ввімкнено https, редагуючи xmlфайли, щоб переключити httpsна httpдопомогу.
Самуель Ель

Відповіді:


12

У мене була дуже схожа проблема, коли я перемістив блог WordPress з однієї установки WordPress до інсталяції Multisite з різними доменними іменами, але однаковою IP-адресою.
Я з’ясував, що проблема полягає у wp_http_validate_urlфункції, яка скидає URL-адресу, якщо IP-код джерела такий самий, як IP-адреса призначення.
Ви можете додати фільтр, wp_http_validate_urlщоб запобігти цьому та дозволити відповідність вихідних та цільових IP-адрес:

add_filter( 'http_request_host_is_external', '__return_true' );

Будь ласка, дивіться цю відповідь для детального пояснення гачка фільтра та чому слід видалити його після імпорту: /wordpress//a/123313/75573


Я провів близько 5 годин, намагаючись імпортувати свої повідомлення зі своїми зображеннями, і це вирішило це.
Джонні

Я не впевнений, що розумію, куди потрібно пройти цю редакцію. Хтось може пояснити далі?
ClairelyClaire

Ви можете скинути його у function.php або помістити його у плагін. Пізніше це полегшує його вмикання та вимикання за потреби.
Мерль

1

Коли ви створили експортний файл, це було на живому сервері чи localhost? Чи доступна ця веб-сторінка? Якщо імпорт медіа не вдається, це означає, що зображення, пов’язані з XML, виходять 404.

Відкрийте XML-файл і подивіться, куди вказують зображення. Якщо ми відкриємо XML-файл тематичного блоку, ми побачимо такі рядки:

<wp:attachment_url>http://wpthemetestdata.files.wordpress.com/2008/06/canola2.jpg</wp:attachment_url>

Цей файл дуже чітко доступний для імпорту. Що кажуть ваші файли attach_url?


1
Я згадав "І зображення, які не вдалося завантажити, є гарячими посиланнями з попереднього сервера, який споживає передачу цього попереднього сервера ...", що вказує на те, що зображення не повертаються 404, вони не є localhost, але вони все ще генерують "Не вдалося імпортувати медіа ". Мої <wp:attachment_url>кажуть, що example.com/2008/06/image.jpg також там, де example.com завжди доступний домен. Ось чому я задаю це питання :) Очевидно, це не працює, навіть якщо зображення не генерують 404. Він навіть не працює з wpthemetestdata.files.wordpress.com періодично (~ 5 випадкових зображень із 30 виходять з ладу).
Пол

Правильно, вибачте, мій розум трохи перегорів у цей момент вночі. У вас є якийсь захист гарячої лінії на сервері?
Загальні ідеї

1
Ні, це загальнодоступний сервер із загальнодоступними зображеннями, без захисту. Але навіть якщо був якийсь захист, сервер WordPress періодично робить те саме. Чи означає це, що цей імпортер просто баггі?
Пол

У того або одного з серверів є неприємно коротке значення тайм-ауту. Я свіжий від ідей для вас. Чи імпортує XML належним чином до Localhost? Якщо так, ви можете сортувати чит ... зробити імпорт локально, тоді використовуйте WP Migrate DB і клонуйте результат, щоб жити.
Імперативні ідеї

1

Я також намагаюся імпортувати засоби масової інформації на wordpress.org з wordpress.com. Мені вдалося імпортувати всі повідомлення, проте зображення все ще були пов’язані зі старим сайтом. Я майже плакала, коли зрозуміла, що єдиним рішенням було завантаження та завантаження понад 200 великих зображень за поштою (експортування / імпорт менших порцій публікацій також не працював).

Після тестування деяких плагінів я виявив той, який фактично імпортує ваш Wordpress Media автоматично. Я не міг повірити, але насправді це працює. Ви повинні відправляти повідомлення за поштою, але все-таки краще, ніж завантажувати та завантажувати вручну. Ось посилання, якщо хтось зацікавлений


1

Переконайтеся, що для вашого сайту не встановлено значення "Приватне".

Коли ви експортуєте свій блог Wordpress, весь текстовий вміст вбудовується в отриманий XML-файл. Весь бінарний вміст (зображення, вкладення до файлів тощо) експортується у вигляді URL-адрес, що вказують на їхнє місце в існуючому блозі. Ось чому, коли ви імпортуєте з приватного блогу Wordpress, ви все одно зможете імпортувати всі повідомлення / тощо, але всі зображення / тощо не вдасться.

Ось де вам потрібно змінити налаштування щодо версії засіб (2017-06-19):

введіть тут опис зображення

Відповідна документація Wordpress:

https://en.support.wordpress.com/settings/privacy-settings/

Зауважте, що це потрібно робити з налаштувань вашого облікового запису Wordpress.com, а не з налаштувань самого блогу, що є ще однією можливою точкою плутанини (і розладу).


1

Ця проблема може статися при використанні певних плагінів на віддаленому / локальному сайті.

В ідеалі відключіть усі плагіни на обох сайтах перед експортом чи імпортом, а потім повторно активуйте їх після завершення процесу.

Якщо ви намагаєтесь не вимкнути ВСІ плагіни, то принаймні деактивуйте будь-які плагіни, які впливають на зображення чи обробку зображень ... найпоширенішим типом, напевно, будуть ті, які роблять оптимізацію зображень.

У моєму випадку у мене на локальному сайті був активний оптимізатор зображень EWWW (який дуже рекомендую), і це спричинило цю помилку. Я відключив її, успішно запустив імпорт та відновив його.


0

У мене була така ж проблема, і після години пошуку та тестування проблема полягала в тому, що сервер-джерело блокував завантаження зображень через те, що "Захист гарячої посилання" в cPanel був активним.


Ти маєш рацію. У моєму випадку я зрозумів, що я реалізував захист гарячої лінії у своєму .htaccess. Інші випадки - це cPanel або Cloudflare.
Джон Доу

0

Для тих, хто не хоче використовувати add_filterабо не має уявлення, як їх інтегрувати, не створюючи окремого модуля. Ось швидкий зручний трюк, щоб виконати це.

Відкрийте цей файл

vim ./wp-includes/http.php

Перейдіть до рядка 566та прокоментуйте наступний блок коду.

if ( ! apply_filters( 'http_request_host_is_external', false, $host, $url ) )
  return false;

Як тільки ви прокоментуєте ці два рядки, увійдіть і додайте наступний рядок.

return true;

Вперед і збережіть файл та завантажте XML-файл, щоб спробувати ще раз. Тепер ви завантажите весь відповідний вміст. Поверніться назад, видаліть блок коментарів та заяву про повернення, і ви готові йти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.