extract(shortcode_atts(array(は何をしますか?


28

コーデックスは言う

shortcode_atts()ユーザーのショートコード属性を既知の属性と組み合わせ、必要に応じてデフォルトを設定します。結果には、既知の属性のすべてのキーが含まれ、ショートコード属性の値とマージされます。

私にはあまり意味がありません(私は初心者です)。

以下に例を示します。

function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500', 
'h' => '330',
'q' => '',
'geo' => 'US',
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();  

説明してもらえますか?

回答:


35

shortcode_atts()次のように機能しarray_merge()ます:引数の2番目のリストを最初のリストにマージします。違いは、最初の引数($default)に存在するキーのみをマージすることです。

extract()次に、配列キーを取得し、これらを変数名として設定し、その値を変数値として設定します。'w' => '500'あなたの例ではになり$w = '500'ます。

使用しないでくださいextract()。この非常に悪いコードスタイル。その使用はcoreでも非推奨であり、それは何かを意味します…:)

あなたの例は次のように書かれるべきです:

$args = shortcode_atts( 
    array(
        'w'   => '500',
        'h'   => '330',
        'q'   => '',
        'geo' => 'US',
    ), 
    $atts
);
$w = (int) $args['w'];
$h = (int) $args['h'];
$q = esc_attr( $args['q'] );

1
ありがとうございました。について知りませんextractでしたので、ありがとうございます!
mattnewbie

5
extract()WPコーディング標準でも推奨されていません。参照してくださいmake.wordpress.org/core/handbook/best-practices/...
alexg

警告!ユーザー入力のように、信頼できないデータに対してextract()を使用しないでください。安全ではないため、多くの競合が発生し、以前のコードを上書きする可能性があります。これは、コードの実際に、本当に、本当に保護された部分でのみ使用でき、そこでは期待されるものと必要なものがわかります。
Ivijan StefanStipić17年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.