web-dev-qa-db-ja.com

Extract(shortcode_atts(array)とは何ですか?

コーデックスは言う

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();  

説明してください。

24
mattnewbie

shortcode_atts()array_merge() のように動作します。これは、2番目の引数リストを最初の引数リストにマージします。違いは次のとおりです。最初の引数($default)にあるキーのみをマージします。

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

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

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

$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'] );
31
fuxia