揭开短码术语的神秘面纱

时间:2017-10-14 作者:The WP Intermediate

Tuts Plus中的代码片段→

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

Source Link →

问题→

如何复制"$to" 在短代码中?

我试过这个→

[link $to= "https://wordpress.stackexchange.com/"] 但这并不奏效。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

只是[link to= "https://wordpress.stackexchange.com/"].

这是一个教科书上的例子extract() 很糟糕。你很难分辨变量是从哪里来的。extract() 从数组中创建变量,键成为变量名。所以这部分:

extract(shortcode_atts(array(
    "to" => \'http://net.tutsplus.com\'
), $atts));
正在创建具有to 键,设置为http://net.tutsplus.com 如果未在中定义$atts. 那就是extract()ed,以便to 密钥变为$to.

您应该避免使用extract() 只需使用$atts 变量:

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

结束

相关推荐

Shortcode IF statment help

下面是我一直致力于运行短代码的代码。我已经尝试实施if() 声明,但没有任何效果。我有两个输出。我想做的是,如果属性(\'img\', \'user\', \'text\') 显示在快捷码中$output1.否则,如果属性(\'img\', \'text\', \'length\', \'material\', \'power\') 显示在快捷码中$output2.function hire_equipment_func($atts) { extract( s