web-dev-qa-db-ja.com

ショートコード命名法の説明と理解

Tuts Plusのコードスニペット→

function link($atts, $content = null) {
    extract(shortcode_atts(array(
        "to" => 'http://net.tutsplus.com'
    ), $atts));
    return '<a href="'.$to.'">'.$content.'</a>';
}

ソースリンク→

質問→

ショートコードで"$to"を再現する方法?

私はこれを試した→

[link $to= "https://wordpress.stackexchange.com/"]しかしこれはうまくいきませんでした。

1
The WP Novice

それはちょうど[link to= "https://wordpress.stackexchange.com/"]です。

これはextract()が悪い理由の教科書の例です。変数がどこから来ているのか簡単にはわかりません。 extract()はキーを変数名にして配列から変数を作成します。だからこの部分:

extract(shortcode_atts(array(
    "to" => 'http://net.tutsplus.com'
), $atts));

toキーを持つ配列を作成しています。http://net.tutsplus.comで定義されていない場合は$attsに設定します。 toキーが$toになるようにextract()edです。

あなたはextract()を使わずに$atts変数を使うべきです:

function link($atts, $content = null) {
    $atts = shortcode_atts(array(
        "to" => 'http://net.tutsplus.com'
    ), $atts);
    return '<a href="'.$atts['to'].'">'.$content.'</a>';
}
2
Jacob Peattie