WordPress Importer 最新版をつかってるのにエラーが消えない場合

  • 7
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

稼働している WordPress サイトのお引っ越しって、何度も記事を移さないといけない場面が出てきがちです。
そのたびにデータベースまるごと入れ替えるのって面倒くさい!

そこで私は WordPress Importer を愛用しています。
エクスポートするときに、日付や、公開ステータスで絞り込みした XML を出せるので、便利。

エクスポート画面。引越し元は古いバージョンの WordPress だったりする場合があってUIが古いです。

最新バージョンでバグが有る

ところが、引越し先で最新の WordPress と WordPress Importer プラグインを使っているにもかかわらず、以下のようなエラーが消えませんでした。

Strict Standards: Redefining already defined constructor for class WXR_Parser_Regex in xxxxx\wp-content\plugins\wordpress-importer\parsers.php on line 408
Strict Standards: Declaration of WP_Import::bump_request_timeout() should be compatible with WP_Importer::bump_request_timeout($val) in xxxxx\wp-content\plugins\wordpress-importer\wordpress-importer.php on line 38

Trunk からダウンロードすればOK

調べてみたら、Trac にチケットがありました。
余談ですけど報告者の Kim さんって、 Docs チームのメンバーで昨年12月に亡くなった方だ。

https://core.trac.wordpress.org/ticket/24373

これによると、リリースされてないけど /trunk のほうにあるプラグインは修正されているので、管理画面からインストールせずに http://downloads.wordpress.org/plugin/wordpress-importer.zip から直接ダウンロードすればいいとのこと。

もし「ディスクへのファイルの書き込みに失敗しました。」とメッセージが出たら

ネット上には、「パーミッションが間違ってないか確認しましょう」、とか、「php.ini の upload_max を上げましょう」、とか、そういうつまづきに対する助け舟はたくさんあるのですが、それでも解決しない方へ。一時ファイルの保存場所を疑いましょう。

普通のレンタルサーバーでは大丈夫そうですが、今回引き継いだサーバーでは /tmp ディレクトリに書き込み権限がないようでした。

今回は php.ini の設定ができるサーバーだったので、php.ini から /tmp ディレクトリの場所を指定し、 /tmp ディレクトリをブラウザから書き込み可能な権限にしてあげたら動きました。
(php.ini は、レンタルサーバーだと、専用の管理画面から書き換えが必要な場合が多いと思います。)

upload_tmp_dir = /(ルートの場所)/wp-content/tmp

/tmp 自体のパーミッションが変えられるなら、変えてもいいと思うんですけど、どっちのほうがサーバーてきに素敵なんだろう?知ってるひといたら教えて下さい。

ところで、通常は wp-config.php に以下を追加して、/tmp の場所が変更できますが、これだとプラグインのアップロードとか、そういうときは大丈夫なんですが、 WordPress Importer プラグインには反映されないみたいです。

define ('WP_TEMP_DIR', 'DIRECTORY PLACE FROM ROOT');

反映されたほうがいいような気がするのでチケットをたててみました。
どうだろうかしら。
#31976 (WordPress Importer ignore WP_TEMP_DIR in wp-config) – WordPress Trac