HOME>WEBプログラム覚書>[WordPress] そろそろショートコードのサンプルでextract()を使うのを辞めようか。

[WordPress] そろそろショートコードのサンプルでextract()を使うのを辞めようか。

そろそろWordPressのショートコードのサンプルでextract()を使うのを辞めてもいいのではないだろうか。 まぁshortcode_atts()がarray_merge()ではなくデフォルト値の設定ということを考えれば変数の上書きするような コードにはならないだろうけど補完も効かないし、関数実行コスト余計にかかるしなにもいいこと無い気がする。

たしかに2.5のshortcodes.phpのコメントには

2.5 shortcodes.php

  1. <?php
  2. function bartag_func($atts)
  3. {
  4.     extract(shortcode_atts(array(
  5.         'foo' => 'no foo',
  6.         'baz' => 'default baz',
  7.     ), $atts));
  8.  
  9.     return "foo = {$foo}";
  10. }
  11. add_shortcode('bartag', 'bartag_func');
  12.  
  13. ?>

と書いてあるけど、今現在(4.8.2)のshortcodes.phpのコメントでは

4.8.2 shortcodes.php

  1. <?php
  2. function bartag_func($atts)
  3. {
  4.     $args = shortcode_atts(array(
  5.         'foo' => 'no foo',
  6.         'baz' => 'default baz',
  7.     ), $atts);
  8.  
  9.     return "foo = {$args['foo']}";
  10. }
  11. ?>

ってなっている。ってことで自分の昔の投稿も修正。 スペースデブリに囲まれた地球の如くグローバルが汚染されてるWordPressで迂闊にextract()を使うと悲劇が起こるから気をつけましょう。

投稿日 2017年10月26日 03:26
カテゴリ PHP
タグ WordPress
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1358

コメント

コメントする
Name
Email Address
URL