Impossible d'importer le média


14

Lorsque je génère un fichier XML avec [Outils> Exporter] et utilise [Outils> Importer] sur un autre site Web WordPress, j'obtiens «Échec de l'importation du média» pour chaque type de publication de pièce jointe. Et les images qui n'ont pas pu être chargées sont liées à chaud depuis le serveur précédent qui consomme le transfert de ce serveur précédent ...

Mais lorsque je télécharge "Unit Test" sur http://codex.wordpress.org/Theme_Unit_Test, ce problème n'existe pas. Certaines images ont toujours "Échec d'importation des médias", mais ce n'est que comme 5 images sur 30. Ils ont des URL vers leur propre serveur dans leur XML mais d'une manière ou d'une autre [Tools> Import] parvient à télécharger leurs médias et à remplacer ces URL par de nouveaux emplacements (il n'est plus lié à chaud).

Quelle est l'astuce pour le faire fonctionner correctement sans "Échec de l'importation du média"? Pourquoi même "Test unitaire" contient quelques messages "Échec de l'importation des médias"?


Comme le serveur sur lequel vous importez doit les récupérer à partir de l'ancien emplacement, vous devez non seulement vérifier si les fichiers se trouvent sur l'ancien serveur, mais également si le nouveau serveur peut les récupérer. Peut-être que quelque chose limite les demandes sortantes. Avez-vous essayé de l'importer sur un autre serveur ou hôte local? Je crains que cela ne soit un problème très localisé.
kraftner

1
À partir de WordPress 4.3.1 (peut-être plus tôt), vous pouvez le définir IMPORT_DEBUGet le configurer truepour obtenir des commentaires significatifs au lieu de simplement "Échec de l'importation des médias". Je ne peux pas imaginer pourquoi ce n'est pas un comportement par défaut. Cela peut aider à réduire votre problème si le temps est juste.
Mark

@Mark dans quel fichier puis-je définir l' IMPORT_DEBUGoption
kimliv

2
@kimliv: vous voulez coller cela dans wp-config.php à la racine de votre WordPress installer: define ( 'IMPORT_DEBUG', true );.
Mark

Désolé pour avoir sauté, eu le même problème et le site d'origine à partir duquel j'importais SSL ne fonctionnait pas et les xmlURL sont activées https, modifiant les xmlfichiers à basculer httpspour httpaider.
Samuel Elh

Réponses:


12

J'ai eu un problème très similaire lorsque j'ai déplacé un blog WordPress d'une installation WordPress unique vers une installation multisite avec des noms de domaine différents mais la même IP.
J'ai découvert que le problème est la wp_http_validate_urlfonction qui supprime l'URL si l'IP source est la même que l'IP de destination.
Vous pouvez ajouter un filtre wp_http_validate_urlpour éviter cela et autoriser la correspondance des adresses IP source et de destination:

add_filter( 'http_request_host_is_external', '__return_true' );

Veuillez consulter cette réponse pour une explication détaillée du crochet de filtre et pourquoi vous devez le supprimer après l'importation: /wordpress//a/123313/75573


J'ai passé près de 5 heures à essayer d'importer mes messages avec leurs images et cela l'a résolu.
Jonny

Je ne suis pas sûr de comprendre où cette modification doit aller. Quelqu'un peut-il expliquer davantage?
ClairelyClaire

Vous pouvez le déposer dans functions.php ou le mettre dans un plugin. Cette dernière permet de l'allumer et de l'éteindre plus facilement au besoin.
Merl

1

Lorsque vous avez généré votre fichier d'exportation, était-ce sur un serveur actif ou sur un hôte local? Cette page Web est-elle toujours accessible? Si l'importation de médias échoue, cela signifie que les images, comme liées hors du XML, arrivent 404.

Ouvrez le fichier XML et voyez où les images pointent. Si nous ouvrons le fichier XML de l'unité thématique, nous verrons des lignes comme celle-ci:

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

Ce fichier est très clairement disponible pour l'importation. Que disent vos fichiers attachment_url?


1
J'ai mentionné "Et les images qui n'ont pas pu être chargées sont liées par lien direct à partir du serveur précédent qui consomme le transfert de ce serveur précédent ..." ce qui indique que les images ne renvoient pas 404, elles ne sont pas sur localhost mais elles génèrent toujours "Échec de l'importation du média ". Mon <wp:attachment_url>dit example.com/2008/06/image.jpg aussi où example.com est toujours un domaine accessible. C'est pourquoi je pose cette question :) Cela ne fonctionne clairement pas même si les images ne génèrent pas 404. Cela ne fonctionne même pas avec wpthemetestdata.files.wordpress.com de temps en temps (~ 5 images aléatoires sur 30 échouent).
Paul

Bon, désolé, mon esprit est un peu épuisé à ce point de la nuit. Avez-vous une sorte de protection par lien dynamique sur le serveur?
Imperative Ideas

1
Non, c'est un serveur accessible au public avec des images accessibles au public, aucune protection que ce soit. Mais même s'il y avait une certaine protection, le serveur de WordPress fait la même chose de temps en temps. Cela signifie-t-il que cet importateur est simplement bogué?
Paul

Ce ou l'un des serveurs a une valeur de délai d'expiration extrêmement courte. Je suis à court d'idées pour toi. Le XML est-il importé correctement vers Localhost? Si c'est le cas, vous pouvez en quelque sorte tricher ... effectuez l'importation localement, puis utilisez WP Migrate DB et clonez le résultat en direct.
Imperative Ideas

1

J'ai également eu du mal à importer des médias sur wordpress.org à partir de wordpress.com. J'ai réussi à importer tous les messages, mais les images étaient toujours liées à l'ancien site. Je pleurais presque en réalisant que la seule solution était de télécharger et de télécharger manuellement plus de 200 grandes images poste par poste (l'exportation / importation de petites portions de messages ne fonctionnait pas non plus).

Après avoir testé certains plugins, j'en ai trouvé un qui importe réellement vos médias wordpress automatiquement. Je ne pouvais pas croire, mais ça marche vraiment. Vous devez aller poste par poste, mais c'est toujours mieux que le téléchargement et le téléchargement manuels. Voici le lien si quelqu'un est intéressé


1

Assurez-vous que votre site n'est pas défini sur "Privé".

Lorsque vous exportez votre blog Wordpress, tout le contenu textuel est incorporé dans le fichier XML résultant. Tout le contenu binaire (images, pièces jointes, etc.) est exporté sous forme d'URL pointant vers leur emplacement sur le blog existant. C'est pourquoi lorsque vous importez à partir d'un blog Wordpress privé, vous pourrez toujours importer tous les articles / etc mais toutes les images / etc échoueront.

Voici où vous devez modifier le paramètre à partir de la version actuelle (2017-06-19):

entrez la description de l'image ici

Documentation Wordpress pertinente:

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

Notez que cela doit être fait à partir des paramètres de votre compte Wordpress.com, pas à partir des paramètres du blog lui-même, ce qui est un autre point potentiel de confusion (et de frustration).


1

Ce problème peut se produire lors de l'utilisation de certains plugins sur le site distant / local.

Idéalement, désactivez tous les plugins sur les deux sites avant d'exporter ou d'importer, puis réactivez-les une fois le processus terminé.

Si vous essayez d'éviter de désactiver TOUS les plugins, désactivez au moins tous les plugins qui affectent les images ou la gestion des images ... le type le plus courant serait probablement ceux qui optimisent l'image.

Dans mon cas, j'avais EWWW Image Optimizer (que je recommande fortement) actif sur le site local, et cela a provoqué cette erreur. Je l'ai désactivé, j'ai exécuté l'importation avec succès et l'ai réactivé.


0

J'ai eu le même problème et après des heures de recherche et de test, le problème était que le serveur source bloquait les téléchargements d'images en raison de la "protection Hotlink" active dans le cPanel.


Tu as raison. Dans mon cas, je me suis rendu compte que j'avais mis en place une protection par hotlink dans mon .htaccess. D'autres cas sont cPanel ou Cloudflare.
John Doe

0

Pour ceux qui ne veulent pas utiliser add_filterou ne savent pas comment l'intégrer sans créer un module séparé. Voici une astuce rapide et pratique pour le faire.

Ouvrez ce fichier

vim ./wp-includes/http.php

Accédez à la ligne 566et commentez le bloc de code suivant.

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

Une fois que vous avez commenté ces deux lignes, entrez et ajoutez la ligne suivante.

return true;

Allez-y, enregistrez le fichier et téléchargez le fichier XML pour réessayer. Vous allez maintenant télécharger tout le contenu associé. Revenez en arrière et supprimez le bloc de commentaires et la déclaration de retour et vous êtes prêt à partir.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.