WordPress ショートコード作成でextract()を使うのはもうやめよう

Takashi Fujisakiのアバター
700文字

昔作ったWordPressショートコードを更新しようと開いたら、phpcsに怒られました。 extract() というPHPの関数について何か言われているようです。

extract() usage is highly discouraged, due to the complexity and unintended issues it might cause.

訳: extract()は複雑で意図しない問題が発生する可能性があるためお勧めできません。

extract() はWordPressのショートコードを作る際に、伝統的に使われてきました。こんな感じ↓に。

function my_shortcode( $atts ) {
	extract(
		shortcode_atts(
			array(
				'title' => 'My Title',
			),
			$atts
		)
	);
	return $title;
}

でも、この書き方はもうやめよう。

素直にこう書くのが現在推奨されています。

function my_shortcode( $atts ) {
	$atts = shortcode_atts(
		array(
			'title' => 'My Title',
		),
		$atts
	);

	return $atts['title'];
}

というわけでphpcsからも怒られなくなりました。それではまた。