Fehler beim Importieren von Medien

14

Wenn ich eine XML-Datei mit [Extras> Exportieren] generiere und [Extras> Importieren] auf einer anderen WordPress-Website verwende, wird für jeden Anhangspostentyp "Fehler beim Importieren von Medien" angezeigt. Und Bilder, die nicht geladen werden konnten, sind mit einem Hotlink vom vorherigen Server verbunden, der die Übertragung dieses vorherigen Servers verbraucht ...

Aber wenn ich "Unit Test" von http://codex.wordpress.org/Theme_Unit_Test herunterlade, besteht dieses Problem nicht. Einige Bilder haben immer noch die Meldung "Medien konnten nicht importiert werden", aber es sind nur 5 von 30 Bildern. Sie haben URLs zu ihrem eigenen Server in ihrem XML, aber irgendwie gelingt es [Tools> Import], ihre Medien herunterzuladen und diese URLs durch neue Speicherorte zu ersetzen (es ist kein Hotlink mehr vorhanden).

Was ist der Trick, damit es ohne "Fehler beim Importieren von Medien" richtig funktioniert? Warum gibt es auch bei "Unit Test" einige Meldungen, dass der Import von Medien fehlgeschlagen ist?

Paul
quelle
Da der Server, auf dem Sie importieren, diese vom alten Speicherort abrufen muss, sollten Sie nicht nur prüfen, ob sich die Dateien auf dem alten Server befinden, sondern auch, ob der neue Server sie abrufen kann. Vielleicht schränkt etwas ausgehende Anfragen ein. Haben Sie versucht, es auf einem anderen Server oder auf einem lokalen Host zu importieren? Ich fürchte, dies könnte ein sehr lokalisiertes Problem sein.
Kraftner
1
Wie von Wordpress 4.3.1 (evtl. früher) können Sie festlegen , IMPORT_DEBUGund legen Sie es auf trueaussagekräftiges Feedback statt nur „Fehler beim Importieren von Medien“ zu bekommen. Ich kann mir nicht vorstellen, warum dies nicht das Standardverhalten ist. Das kann helfen, Ihr Problem einzugrenzen, wenn das Wetter gerade richtig ist.
Mark
@ Mark in welcher Datei kann ich die IMPORT_DEBUGOption
einstellen
2
@kimliv: Sie wollen , dies bleiben in wp-config.php an der Wurzel Ihrer Wordpress installieren: define ( 'IMPORT_DEBUG', true );.
Mark
Entschuldigung für das Stoßen, hatte das gleiche Problem und die ursprüngliche Website, von der ich importiere, hatte SSL nicht funktioniert und die xmlURLs sind aktiviert https. Bearbeiten Sie die xmlDateien, um zu wechseln, um httpszu httphelfen.
Samuel Elh

Antworten:

12

Ich hatte ein sehr ähnliches Problem, als ich ein WordPress-Blog von einer einzelnen WordPress-Installation auf eine Multisite-Installation mit unterschiedlichen Domain-Namen, aber derselben IP-Adresse verschoben habe.
Ich fand heraus, dass das Problem die wp_http_validate_urlFunktion ist, die die URL löscht, wenn die Quell-IP mit der Ziel-IP identisch ist.
Sie können einen Filter hinzufügen wp_http_validate_url, um dies zu verhindern und die Zuordnung von Quell- und Ziel-IPs zuzulassen:

add_filter( 'http_request_host_is_external', '__return_true' );

In dieser Antwort finden Sie eine detaillierte Erklärung des Filter-Hooks und warum Sie ihn nach dem Import entfernen sollten: /wordpress//a/123313/75573

Merl
quelle
Ich habe fast 5 Stunden damit verbracht, meine Posts mit ihren Bildern zu importieren, und das hat es gelöst.
Jonny
Ich bin nicht sicher, ob ich verstehe, wohin diese Bearbeitung gehen muss. Kann mir jemand weiter erklären?
ClairelyClaire
Sie können es in functions.php ablegen oder in ein Plugin einfügen. Letzteres erleichtert das Ein- und Ausschalten nach Bedarf.
Merl
1

Wenn Sie Ihre Exportdatei generiert haben, war es auf einem Live-Server oder einem lokalen Host? Ist diese Webseite noch zugänglich? Wenn der Medienimport fehlschlägt, bedeutet dies, dass die aus dem XML-Code verknüpften Bilder angezeigt werden 404.

Öffnen Sie die XML-Datei und sehen Sie, wohin die Bilder zeigen. Wenn wir die XML-Datei der Themeneinheit öffnen, sehen wir folgende Zeilen:

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

Diese Datei ist sehr eindeutig für den Import verfügbar. Was sagen Ihre attachment_url-Dateien?

Imperative Ideen
quelle
1
Ich erwähnte "Und Bilder, die nicht geladen werden konnten, sind vom vorherigen Server verlinkt, der die Übertragung dieses vorherigen Servers verbraucht ...", was darauf hinweist, dass Bilder nicht 404 zurückgeben, sich nicht auf localhost befinden, aber dennoch generieren "Fehler beim Importieren von Medien ". Meine <wp:attachment_url>sagt example.com/2008/06/image.jpg auch wo example.com immer zugänglich Domäne ist. Das ist der Grund, warum ich diese Frage stelle :) Es funktioniert eindeutig nicht, auch wenn Bilder nicht 404 generieren. Es funktioniert gelegentlich nicht mit wpthemetestdata.files.wordpress.com (~ 5 von 30 zufälligen Bildern schlagen fehl).
Paul
Tut mir leid, mein Verstand ist an diesem Punkt in der Nacht ein bisschen ausgebrannt. Haben Sie einen Hotlink-Schutz auf dem Server?
Imperative Ideas
1
Nein, es ist ein öffentlich zugänglicher Server mit öffentlich zugänglichen Bildern, ohne jeglichen Schutz. Aber selbst wenn es einen gewissen Schutz gab, macht der WordPress-Server gelegentlich das Gleiche. Bedeutet das, dass dieser Importeur nur fehlerhaft ist?
Paul
Dieser oder einer der Server hat einen unangenehm kurzen Timeout-Wert. Ich habe keine Ideen mehr für dich. Wird das XML ordnungsgemäß in Localhost importiert? In diesem Fall können Sie den Import lokal ausführen, dann WP Migrate DB verwenden und das Ergebnis zum Leben erwecken.
Imperative Ideas
1

Ich habe auch Probleme damit, Medien von wordpress.com nach wordpress.org zu importieren. Ich konnte alle Beiträge importieren, die Bilder waren jedoch immer noch mit der alten Site verlinkt. Ich musste fast weinen, als mir klar wurde, dass die einzige Lösung darin bestand, mehr als 200 große Bilder per Post manuell herunterzuladen und hochzuladen (auch das Exportieren / Importieren kleinerer Teile von Posts funktionierte nicht).

Nach dem Testen einiger Plugins habe ich eines gefunden, das Ihre WordPress-Medien automatisch importiert. Ich konnte es nicht glauben, aber es funktioniert tatsächlich. Sie müssen Post für Post gehen, aber es ist immer noch besser als manuelles Herunterladen und Hochladen. Hier ist der Link, wenn jemand interessiert ist

Claudia
quelle
1

Stellen Sie sicher, dass Ihre Website nicht auf "Privat" eingestellt ist.

Wenn Sie Ihr Wordpress-Blog exportieren, wird der gesamte Textinhalt in die resultierende XML-Datei eingebettet. Alle binären Inhalte (Bilder, Dateianhänge usw.) werden als URLs exportiert, die auf ihre Position im vorhandenen Blog verweisen. Aus diesem Grund können Sie beim Importieren aus einem privaten Wordpress-Blog weiterhin alle Posts / etc importieren, aber alle Images / etc schlagen fehl.

Hier müssen Sie die Einstellung ab der aktuellen Version (19.06.2017) ändern:

Bildbeschreibung hier eingeben

Relevante Wordpress-Dokumentation:

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

Beachten Sie, dass dies über die Einstellungen Ihres Wordpress.com-Kontos erfolgen muss, nicht über die Einstellungen des Blogs selbst, was ebenfalls zu Verwirrung (und Frustration) führen kann.

nathanchere
quelle
1

Dieses Problem kann auftreten, wenn bestimmte Plugins auf der Remote- / lokalen Site verwendet werden.

Deaktivieren Sie im Idealfall alle Plugins auf beiden Sites, bevor Sie sie exportieren oder importieren, und reaktivieren Sie sie nach Abschluss des Vorgangs.

Wenn Sie vermeiden möchten, ALLE Plugins zu deaktivieren, deaktivieren Sie zumindest alle Plugins, die sich auf Bilder oder die Bildverarbeitung auswirken. Der häufigste Typ ist wahrscheinlich der, der die Bildoptimierung ausführt.

In meinem Fall hatte ich das EWWW-Bildoptimierungsprogramm (das ich sehr empfehle) auf der lokalen Site aktiviert und es verursachte diesen Fehler. Ich habe es deaktiviert, den Import erfolgreich ausgeführt und wieder aktiviert.

James Revillini
quelle
0

Ich hatte das gleiche Problem und nach stundenlangem Suchen und Testen bestand das Problem darin, dass der Quellserver das Herunterladen von Bildern blockierte, weil "Hotlink Protection" im cPanel aktiv war.

AMIB
quelle
Du hast recht. In meinem Fall habe ich festgestellt, dass ich in meinem .htaccess einen Hotlink-Schutz implementiert habe. Andere Fälle sind cPanel oder Cloudflare.
John Doe
0

Für diejenigen, die nicht verwenden möchten add_filter oder keine Ahnung haben, wie es integriert werden kann, ohne ein separates Modul zu erstellen. Hier ist ein kurzer praktischer Trick, um es zu erledigen.

Öffnen Sie diese Datei

vim ./wp-includes/http.php

Gehen Sie zur Zeile 566und kommentieren Sie den folgenden Codeblock aus.

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

Wenn Sie diese beiden Zeilen auskommentiert haben, fügen Sie die folgende Zeile hinzu.

return true;

Speichern Sie die Datei und laden Sie die XML-Datei hoch, um es erneut zu versuchen. Sie werden nun den gesamten zugehörigen Inhalt herunterladen. Gehen Sie zurück und entfernen Sie den Kommentarblock und die return-Anweisung und Sie können loslegen.

Rick
quelle