Nie udało się zaimportować mediów

14

Kiedy generuję plik XML za pomocą [Narzędzia> Eksportuj] i używam [Narzędzia> Importuj] na innej stronie WordPress, pojawia się komunikat „Nie można zaimportować multimediów” dla każdego typu postu załącznika. A obrazy, których nie udało się załadować, są odsyłane do hotlink z poprzedniego serwera, który zużywa transfer tego poprzedniego serwera ...

Ale kiedy pobieram „Test jednostkowy” ze strony http://codex.wordpress.org/Theme_Unit_Test, ten problem nie istnieje. Niektóre obrazy nadal mają komunikat „Nie udało się zaimportować multimediów”, ale jest to tylko 5 z 30 obrazów. Mają adresy URL do własnego serwera w pliku XML, ale w jakiś sposób [Narzędzia> Importuj] udaje im się pobrać swoje media i zastąpić te adresy URL nowymi lokalizacjami (nie jest to już link gorący).

Jaka jest sztuczka, aby działała poprawnie bez „Nie udało się zaimportować mediów”? Dlaczego nawet „Test jednostkowy” ma kilka komunikatów „Nie udało się zaimportować mediów”?

Paweł
źródło
Ponieważ serwer, na którym importujesz, musi pobrać je ze starej lokalizacji, powinieneś nie tylko sprawdzić, czy pliki znajdują się na starym serwerze, ale także czy nowy serwer może je pobrać. Może coś ogranicza żądania wychodzące. Próbowałeś zaimportować go na inny serwer lub host lokalny? Obawiam się, że może to być bardzo zlokalizowany problem.
kraftner
1
Począwszy od WordPressa 4.3.1 (być może wcześniejszego), możesz zdefiniować IMPORT_DEBUGi ustawić, trueaby otrzymywać znaczące informacje zwrotne zamiast po prostu „Nie udało się zaimportować multimediów”. Nie mogę sobie wyobrazić, dlaczego nie jest to zachowanie domyślne. To może pomóc zawęzić problem, jeśli pogoda jest odpowiednia.
Mark
@Zaznacz, w którym pliku mogę ustawić IMPORT_DEBUGopcję
kimliv
2
@kimliv: będziesz chciał trzymać to w wp-config.php w katalogu głównym WordPress zainstalować: define ( 'IMPORT_DEBUG', true );.
Mark
Przepraszamy za wpadanie, miałem ten sam problem, a oryginalna witryna, z której importowałem, nie działała SSL, a xmladresy URL są włączone https, edytuję xmlpliki, aby przełączyć httpsna httppomoc.
Samuel Elh,

Odpowiedzi:

12

Miałem bardzo podobny problem, kiedy przeniosłem Blog WordPress z pojedynczej instalacji WordPress do instalacji na wielu stronach z różnymi nazwami domen, ale tym samym adresem IP.
Dowiedziałem się, że problemem jest wp_http_validate_urlfunkcja, która upuszcza adres URL, jeśli źródłowy adres IP jest taki sam jak docelowy adres IP.
Możesz dodać filtr, wp_http_validate_urlaby temu zapobiec i umożliwić dopasowanie źródłowego i docelowego adresu IP:

add_filter( 'http_request_host_is_external', '__return_true' );

Proszę zobaczyć tę odpowiedź, aby uzyskać szczegółowe wyjaśnienie haka filtra i dlaczego należy go usunąć po imporcie: /wordpress//a/123313/75573

Merl
źródło
Spędziłem prawie 5 godzin, próbując zaimportować swoje posty z ich obrazami i to rozwiązało.
Jonny
Nie jestem pewien, czy rozumiem, dokąd zmierza ta edycja. Czy ktoś może wyjaśnić dalej?
ClairelyClaire
Możesz upuścić go w functions.php lub umieścić we wtyczce. Później ułatwia włączanie i wyłączanie w razie potrzeby.
Merl
1

Czy podczas generowania pliku eksportu był on na serwerze na żywo, czy na hoście lokalnym? Czy ta strona internetowa jest nadal dostępna? Jeśli import multimediów nie powiedzie się, oznacza to, że obrazy, jako połączone z XML, zbliżają się do 404.

Otwórz plik XML i zobacz, gdzie wskazują obrazy. Jeśli otworzymy plik XML jednostki motywu, zobaczymy takie wiersze:

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

Ten plik jest bardzo wyraźnie dostępny do importu. Co mówią twoje pliki attach_url?

Imperatywne pomysły
źródło
1
Wspomniałem „I obrazy, których nie udało się załadować, są odsyłane do hotlink z poprzedniego serwera, który zużywa transfer tego poprzedniego serwera ...”, co wskazuje, że obrazy nie zwracają 404, nie są na lokalnym hoście, ale nadal generują ”. Nie można zaimportować mediów „. My <wp:attachment_url>mówi example.com/2008/06/image.jpg zbyt gdzie example.com jest zawsze dostępne domeny. Dlatego zadaję to pytanie :) Najwyraźniej nie działa, nawet jeśli obrazy nie generują 404. Czasami nawet nie działa z wpthemetestdata.files.wordpress.com (~ 5 losowych obrazów na 30 nie działa ).
Paul
Przepraszam, mój umysł jest trochę wypalony w tym momencie w nocy. Czy masz jakieś zabezpieczenie Hotlink na serwerze?
Imperative Ideas
1
Nie, to publicznie dostępny serwer z publicznie dostępnymi obrazami, bez żadnej ochrony. Ale nawet jeśli była pewna ochrona, serwer WordPress od czasu do czasu robi to samo. Czy to oznacza, że ​​ten importer jest po prostu wadliwy?
Paul
Ten lub jeden z serwerów ma nieprzyjemnie krótką wartość limitu czasu. Nie mam dla ciebie pomysłów. Czy XML importuje się poprawnie do Localhost? Jeśli tak, możesz w pewien sposób oszukać ... wykonaj import lokalnie, a następnie użyj WP Migrate DB i sklonuj wynik, aby uruchomić.
Imperative Ideas,
1

Mam również problemy z importowaniem mediów do wordpress.org z wordpress.com. Udało mi się zaimportować wszystkie posty, jednak zdjęcia nadal były powiązane ze starą witryną. Prawie płakałem, ponieważ zdałem sobie sprawę, że jedynym rozwiązaniem było ręczne pobranie i przesłanie pocztą ponad 200 dużych zdjęć (eksportowanie / importowanie mniejszych części postów również nie działało).

Po przetestowaniu niektórych wtyczek znalazłem taki, który automatycznie importuje twoje media wordpress. Nie mogłem uwierzyć, ale to naprawdę działa. Musisz wysłać post pocztą, ale nadal jest to lepsze niż ręczne pobieranie i przesyłanie. Oto link, jeśli ktoś jest zainteresowany

Claudia
źródło
1

Upewnij się, że Twoja witryna nie jest ustawiona na „Prywatna”.

Podczas eksportowania bloga Wordpress cała treść tekstowa jest osadzana w wynikowym pliku XML. Wszystkie treści binarne (zdjęcia, załączniki plików itp.) Są eksportowane jako adresy URL wskazujące ich lokalizację na istniejącym blogu. Dlatego podczas importowania z prywatnego bloga Wordpress nadal będziesz mógł importować wszystkie posty / etc, ale wszystkie obrazy / etc nie powiodą się.

Oto, gdzie musisz zmienić ustawienie od wersji bieżącej (2017-06-19):

wprowadź opis zdjęcia tutaj

Odpowiednia dokumentacja Wordpress:

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

Pamiętaj, że należy to zrobić z ustawień konta Wordpress.com, a nie z ustawień samego bloga, co jest kolejnym potencjalnym punktem zamieszania (i frustracji).

nathanchere
źródło
1

Ten problem może wystąpić podczas korzystania z niektórych wtyczek w zdalnej / lokalnej witrynie.

Najlepiej wyłączyć wszystkie wtyczki w obu witrynach przed eksportem lub importem, a następnie ponownie je aktywować po zakończeniu procesu.

Jeśli próbujesz uniknąć wyłączenia WSZYSTKICH wtyczek, to przynajmniej dezaktywuj wszystkie wtyczki, które wpływają na obrazy lub obsługę obrazów ... najpowszechniejszym typem prawdopodobnie byłyby te, które wykonują optymalizację obrazu.

W moim przypadku miałem lokalny Optymalizator obrazu EWWW (który bardzo polecam), co spowodowało ten błąd. Wyłączyłem go, pomyślnie uruchomiłem import i reaktywowałem.

James Revillini
źródło
0

Miałem ten sam problem i po wielu godzinach wyszukiwania i testowania problem polegał na tym, że serwer źródłowy blokował pobieranie obrazów z powodu aktywnej ochrony Hotlink w cPanel.

AMIB
źródło
Masz rację. W moim przypadku zdałem sobie sprawę, że zaimplementowałem ochronę hotlink w moim .htaccess. Inne przypadki to cPanel lub Cloudflare.
John Doe
0

Dla tych, którzy nie chcą używać add_filterlub nie mają pojęcia, jak go zintegrować bez tworzenia osobnego modułu. Oto krótka przydatna sztuczka, aby to zrobić.

Otwórz ten plik

vim ./wp-includes/http.php

Przejdź do wiersza 566i skomentuj następujący blok kodu.

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

Po skomentowaniu tych dwóch wierszy, wejdź i dodaj następujący wiersz.

return true;

Śmiało, zapisz plik i prześlij plik XML, aby spróbować ponownie. Teraz pobierzesz całą powiązaną zawartość. Wróć, usuń blok komentarza i instrukcję return i możesz zacząć.

Stóg
źródło