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


14

Когда я генерирую XML-файл с помощью [Инструменты> Экспорт] и использую [Инструменты> Импорт] на другом веб-сайте WordPress, я получаю сообщение «Не удалось импортировать медиа» для каждого типа сообщения вложения. И образы, которые не удалось загрузить, имеют горячую ссылку с предыдущего сервера, который использует передачу этого предыдущего сервера ...

Но когда я загружаю "Unit Test" с http://codex.wordpress.org/Theme_Unit_Test, тогда этой проблемы не существует. Некоторые изображения все еще имеют «Не удалось импортировать медиа», но это всего лишь 5 из 30 изображений. У них есть URL-адреса к их собственному серверу в их XML, но каким-то образом [Инструменты> Импорт] удается загрузить их медиа и заменить эти URL-адреса новыми местоположениями (это больше не является горячей ссылкой).

В чем прикол, чтобы он работал правильно без «Не удалось импортировать медиа»? Почему даже в «модульном тесте» есть несколько сообщений «Не удалось импортировать медиа»?


Поскольку сервер, на который вы импортируете, должен получить их из старого расположения, вы должны не только проверить, находятся ли файлы на старом сервере, но также и если новый сервер может их получить. Может быть, что-то ограничивает исходящие запросы. Вы пытались импортировать его на другой сервер или локальный хост? Боюсь, это может быть очень локализованная проблема.
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

Вы можете оставить его в functions.php или поместить в плагин. Последнее облегчает включение и выключение по мере необходимости.
Мерл

1

Когда вы генерировали файл экспорта, он был на живом сервере или на локальном хосте? Эта веб-страница все еще доступна? Если импорт мультимедиа завершается неудачно, это означает, что изображения, связанные с XML, появляются 404.

Откройте файл XML и посмотрите, куда указывают изображения. Если мы откроем XML-файл Theme Unit, мы увидим такие строки:

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

Этот файл очень четко доступен для импорта. Что говорят ваши файлы attachment_url?


1
Я упомянул «И изображения, которые не удалось загрузить, связаны с предыдущим сервером, который использует передачу этого предыдущего сервера ...», что означает, что изображения не возвращают 404, они не находятся на локальном хосте, но все еще генерируют «Не удалось импортировать медиа ». Мой тоже <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 медиа. Я не мог поверить, но на самом деле это работает. Вы должны отправлять сообщения по почте, но это все же лучше, чем загрузка и выгрузка вручную. Вот ссылка, если кому-то интересно


1

Убедитесь, что для вашего сайта не установлено значение «Приватный».

Когда вы экспортируете свой блог Wordpress, весь текстовый контент внедряется в полученный XML-файл. Весь двоичный контент (изображения, вложения файлов и т. Д.) Экспортируется в виде URL-адресов, указывающих на их местоположение в существующем блоге. Вот почему, когда вы импортируете из частного блога Wordpress, вы все равно сможете импортировать все записи / etc, но все изображения / etc потерпят неудачу.

Вот где вам нужно изменить настройки для текущей версии (2017-06-19):

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

Соответствующая документация Wordpress:

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

Обратите внимание, что это должно быть сделано из настроек вашей учетной записи Wordpress.com, а не из настроек самого блога, что является еще одной потенциальной точкой путаницы (и разочарования).


1

Эта проблема может возникнуть при использовании определенных плагинов на удаленном / локальном сайте.

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

Если вы пытаетесь избежать отключения ВСЕХ плагинов, то по крайней мере отключите все плагины, которые влияют на изображения или обработку изображений ... наиболее распространенным типом, вероятно, будут те, которые выполняют оптимизацию изображений.

В моем случае на локальном сайте был активирован EWWW Image Optimizer (который я настоятельно рекомендую), и это вызвало эту ошибку. Я отключил его, успешно запустил импорт и снова активировал его.


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.