特定のプラグインが原因でWP-CLIがうまく動かないときの対処法

今回はすごく細かいTipsなんですが、本家のSlackの #cli チャンネルで話題になってほほーっと思ったので紹介します。

発端は、あるユーザーによる以下のような質問がきっかけでした。

質問の内容

「WP-CLIコマンドを実行したら Warning: Some code is trying to do a URL redirect. Backtrace: みたいなエラーが出てるんだけどどうしたらいい?」

で、それに対して僕のリアクションは以下のような感じ。

「Backtraceの中に原因となるプラグインの名前が見つかるはずだから調べてみたら?ぶっちゃけWP-CLIでこの問題を解決するのは難しいと思うよ。」

現実問題としてWordPressはコマンドラインで使うことを想定していないので、たとえばプラグインの中に以下のようなコードがあれば、このユーザーさんから報告があった不具合が発生します。

add_action( 'plugins_loaded', function() {
    header( 'Location: https://example.com' );
} );

たとえばSSL化関連のプラグインに上と全く同じではないにしろ、似たような処理があれば「Warning: Some code is trying to do a URL redirect. Backtrace: 」というエラーが出てしまうのは仕方がないのではないかなと。

なので、僕はプラグイン側で直してもらったら?という感じのリアクションをしたのですが、Alain(@schlessera) がナイスな解決方法を教えてくれました。

解決方法

Alainが教えてくれた解決方法は以下の通り。

  1. バックトレースから原因となるプラグインを調べる。
  2. WP-CLI のオプション --skip-plugins=<plugin-slug> にそのプラグインの名前を指定して実行する。

実は、–skip-plugins というオプションの存在はなんとなく知っていましたが、具体的なユースケースを把握してなかったのでなるほど!と思った次第です。

ちなみに WP-CLI のすべてのオプションはデフォルト値を設定ファイルで定義することができます。

なので、そのサイトのドキュメントルート等に  `wp-cli.yml` というファイル名で以下のように記述しておくとわざわざオプションを指定しなくても良くなります。

skip-plugin: <plugin-slug>

https://make.wordpress.org/cli/handbook/config/

 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください