WordPressのショートコードの書き方がどうやら古かったようだ。

作成日:

これまでショートコードは以下のように書いていました。

[php]function my_shortcode( $atts ) {
extract( shortcode_atts(
array(
'name' => '',
),
$atts ) );
return $name;
}
add_shortcode( 'shortcode', 'my_shortcode' );[/php]

これでも問題なく機能するのですが、phpcsでチェックすると

[bash]extract() usage is highly discouraged, due to the complexity and unintended issues it might cause.
// extract()の使用法は複雑さとそれが引き起こすかもしれない意図しない問題のために非常にお勧めできません。[/bash]

WordPressのPHP コーディング規約にも確かにextractは使わないように、と書いてあります。

PHP コーディング規約 - WordPress Codex 日本語版 https://wpdocs.osdn.jp/PHP_%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%B4%84#extract.28.29_.E3.81.AF.E4.BD.BF.E3.82.8F.E3.81.AA.E3.81.84

extract() は使わない #22400 によれば、 extract() はデバッグしにくいし、コードも読みにくい、ひどい関数。使うのは禁止、中で使ってるのも全部削除しよう。 Joseph Scott が 何がそんなにひどいか書いてる。

ということで、今では以下のように記述します。

[php]function my_shortcode( $atts ) {
$atts = shortcode_atts(
array(
'name' => '',
),
$atts
);
return $atts['name'];
}
add_shortcode( 'shortcode', 'my_shortcode' );[/php]

「WordPress ショートコード」で検索しても、昔のスタイルで紹介されていることも多いのでこれからは注意して参ります。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。