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

SPONSORED LINK

今回はすごく細かい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>

 

SPONSORED LINK
Capital Pでは広告を募集しています。 WordPress専門メディアに出稿をご希望の方はお問い合わせください。

この記事を書いた人

宮内隆行

WP-CLIチームのコミッターの一人。VCCW開発者。WordPressコアコントリビューター。辺境の民。コーギーの写真には問答無用でいいねをします。WordPressスペシャリスト@タロスカイ株式会社。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします

Club Capital P

Club Capital PはCapital Pのファンクラブです。有料会員制となっており、Gumroad経由でサブスクリプションをご購入いただき、ライセンスキーを登録いただくことで、会員特典を受け取ることができます。