WP-CLIを使ってるならこう書いたプラグインをとりあえずインストールしとけ

WP-CLI を使ってコマンドを叩いたときに以下のような警告がでたことありません?

PHP Notice:  Undefined index: SERVER_NAME in ...

これはそのサイトで有効化されているプラグインの一つが SERVER_NAME という環境変数にアクセスしているけど、WP-CLI コマンドを実行したときにはこの環境変数に値がセットされないので出る警告です。

実際にブラウザでアクセスしたときにはこの警告はでないのでサイトを運用するには実害はないのですが、もしコマンドを叩くたびに出るようですとうっとおしいですよね。

そんなわけで、そういうサイトでは以下のように記述したプラグインを有効化しておくとこの警告が出なくなります。

// Fixes the warning for the WP-CLI
if ( defined( 'WP_CLI' ) && WP_CLI ) {
	$host = parse_url( home_url(), PHP_URL_HOST );
	$port = parse_url( home_url(), PHP_URL_PORT );
	if ( empty( $_SERVER['HTTP_HOST'] ) ) {
		if ( ! $port || 80 === $port ) {
			$_SERVER['HTTP_HOST'] = $host;
		} else {
			$_SERVER['HTTP_HOST'] = $host . ':' . $port;
		}
	}
	if ( empty( $_SERVER['SERVER_NAME'] ) ) {
		$_SERVER['SERVER_NAME'] = $host;
	}
}

このコードはなにをしているかというとWP-CLIコマンド経由でWordPressにアクセスしたときには home_url() からとった値を $_SERVER['HTTP_HOST'] とか $_SERVER['SERVEER_NAME'] とかの環境変数にセットしています。

WP-CLI でデフォルトでやったらどうかなというのを以前に検討したことはあるのですが、影響範囲がよめないので各自対処してくださいということになっています。

コメントを残す

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