メディアのインポートに失敗しました


14

[ツール>エクスポート]でXMLファイルを生成し、別のWordPress Webサイトで[ツール>インポート]を使用すると、添付ファイルの種類ごとに「メディアのインポートに失敗しました」というメッセージが表示されます。そして、ロードに失敗した画像は、その前のサーバーの転送を消費する前のサーバーからホットリンクされます...

しかし、http://codex.wordpress.org/Theme_Unit_Testから「ユニットテスト」をダウンロードすると、この問題は存在しません。一部の画像には「メディアのインポートに失敗しました」と表示されていますが、30枚中5枚の画像にすぎません。XMLには独自のサーバーへのURLがありますが、どういうわけか[ツール>インポート]はメディアをダウンロードし、これらのURLを新しい場所に置き換えます(ホットリンクされなくなりました)。

「メディアのインポートに失敗しました」なしで適切に動作させるためのトリックは何ですか?「ユニットテスト」にも「メディアのインポートに失敗しました」というメッセージがいくつかあるのはなぜですか?


インポートするサーバーは古い場所からファイルを取得する必要があるため、ファイルが古いサーバーにあるかどうかだけでなく、新しいサーバーがそれらを取得できるかどうかも確認する必要があります。たぶん何かがアウトバウンド要求を制限します。別のサーバーまたはローカルホストにインポートしようとしましたか?これは非常にローカライズされた問題である可能性があります。
クラフトナー14

1
WordPress 4.3.1(おそらくそれ以前)では、「メディアのインポートに失敗しました」の代わりに、意味のあるフィードバックを取得するように定義IMPORT_DEBUGおよび設定できますtrue。これがデフォルトの動作ではない理由は想像できません。天気がちょうど良い場合、それはあなたの問題を絞り込むのに役立つかもしれません。
マーク

@Mark IMPORT_DEBUGオプションを設定できるファイル
kimliv

2
@kimliv:WordPressインストールのルートにあるwp-config.phpにこれを貼り付けます:define ( 'IMPORT_DEBUG', true );
マーク

申し訳ありませんがぶつかるため、同じ問題と私はSSLが機能していない持っていたインポートし、そこから元のサイト持っていたxmlURLが上にあるhttps編集、xml切り替えるためにファイルをhttpshttp助けを。
サミュエルエル16

回答:


12

WordPressブログを単一のWordPressインストールから、異なるドメイン名で同じIPを持つマルチサイトインストールに移動したときに、非常によく似た問題が発生しました。
問題はwp_http_validate_url、ソースIPが宛先IPと同じ場合にURLをドロップする機能であることがわかりました。これを防ぐために
フィルターwp_http_validate_urlを追加して、一致するソースIPと宛先IPを許可できます。

add_filter( 'http_request_host_is_external', '__return_true' );

フィルターフックの詳細な説明と、インポート後にフィルターフックを削除する理由については、この回答を参照してください:https : //wordpress.stackexchange.com/a/123313/75573


投稿に画像をインポートしようとして5時間近く費やしましたが、これで解決しました。
ジョニー

この編集がどこに行く必要があるのか​​理解できません。誰かがさらに説明できますか?
ClairelyClaire

functions.phpにドロップするか、プラグインに入れることができます。後者では、必要に応じて簡単にオン/オフを切り替えることができます。
メール

1

エクスポートファイルを生成したとき、それはライブサーバー上にありましたか、ローカルホスト上にありましたか?そのWebページはまだアクセス可能ですか?メディアのインポートが失敗した場合、XMLからリンクされている画像が404になります。

XMLファイルを開き、画像が指している場所を確認します。テーマユニットXMLファイルを開くと、次のような行が表示されます。

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

そのファイルは非常に明確にインポート可能です。attachment_urlファイルは何と言っていますか?


1
「ロードに失敗した画像は、その前のサーバーの転送を消費する前のサーバーからホットリンクされます...」と述べました。これは、画像が404を返さず、ローカルホスト上になく、「メディアのインポートに失敗しました」を生成することを示します「。私<wp:attachment_url>は、example.comが常にアクセス可能なドメインでもあるexample.com/2008/06/image.jpgも言っています。だから私はこの質問をしています:)画像が404を生成しなくても明らかに動作しません。時々wpthemetestdata.files.wordpress.comでも動作しません(30枚中5枚のランダム画像が失敗します)。
ポール

申し訳ありませんが、この時点で私の心は少し燃え尽きています。サーバーに何らかのホットリンク保護がありますか?
命令的なアイデア

1
いいえ、パブリックにアクセス可能な画像を備えたパブリックにアクセス可能なサーバーであり、保護は一切ありません。しかし、たとえ何らかの保護があったとしても、WordPressのサーバーは時折同じことをします。このインポーターはバグがあるということですか?
ポール

そのサーバーまたは1つのサーバーのタイムアウト値は明らかに短いです。私はあなたのためのアイデアが新鮮です。XMLはLocalhostに正しくインポートされますか?もしそうなら、あなたはカンニングを並べ替えることができます...ローカルでインポートを行い、WP Migrate DBを使用し、結果をライブにクローンします。
命令的なアイデア

1

wordpress.comからwordpress.orgにメディアをインポートするのにも苦労しています。すべての投稿をインポートできましたが、画像はまだ古いサイトにリンクされていました。唯一の解決策は、投稿ごとに200を超える大きな画像を手動でダウンロードしてアップロードすることであることに気付いたので、泣きそうになりました(投稿の小さな部分のエクスポート/インポートも機能しませんでした)。

いくつかのプラグインをテストした後、実際にワードプレスメディアを自動的にインポートするプラグインを見つけました。信じられませんでしたが、実際に機能します。投稿ごとに移動する必要がありますが、それでも手動でダウンロードしてアップロードするよりも優れています。誰かが興味を持っている場合ここにリンクがあります


1

サイトが「プライベート」に設定されていないことを確認してください。

Wordpressブログをエクスポートすると、すべてのテキストコンテンツが結果のXMLファイルに埋め込まれます。すべてのバイナリコンテンツ(画像、添付ファイルなど)は、既存のブログの場所を指すURLとしてエクスポートされます。これが、プライベートWordpressブログからインポートする場合、すべての投稿などをインポートできますが、すべての画像などは失敗する理由です。

現在(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;

これらの2行をコメントアウトしたら、次の行を追加します。

return true;

先に進んでファイルを保存し、XMLファイルをアップロードして再試行してください。これで、関連するすべてのコンテンツをダウンロードします。戻ってコメントブロックとreturnステートメントを削除すれば、準備完了です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.