将变量作为ADD_SHORT代码参数传递

时间:2014-10-30 作者:user3232282

我试图将一个变量传递到add\\u shortcode函数中,用作短代码名称,但它似乎不起作用。有没有一种方法可以传递类似的变量?

foreach ($files1 as $value) {
    $new_value = substr($value, 0, -4);

    add_shortcode($new_value, function() {
        return \'<img src="\' . PATH . L_ITEMS . $new_value . \'.gif">\';
    });

}

2 个回复
SO网友:fuxia

有两种解决方案:

使用third argument for the shortcode.use 关键字示例

每个短代码回调的第三个参数是短代码的名称:

foreach ($files1 as $value) {
    $new_value = substr($value, 0, -4);

    add_shortcode($new_value, function( $attributes, $content, $shortcode ) {
        return \'<img src="\' . PATH . L_ITEMS . $shortcode . \'.gif">\';
    });
}
<将所需的变量传递给use lambda函数的一部分:
foreach ($files1 as $value) {
    $new_value = substr($value, 0, -4);

    add_shortcode($new_value, function() use ( $new_value ) {
        return \'<img src="\' . PATH . L_ITEMS . $new_value . \'.gif">\';
    });
}
我认为您应该只注册一个短代码,并将文件作为属性值传递。这将更快更容易调试。

SO网友:taido

我不确定您是否介意,但我认为您在函数add\\u shortcode中使用的参数$new\\u值未定义。

结束

相关推荐

Content between shortcodes

我想知道是否有一种方法可以在短代码之间获取内容并将其输入到字符串中,例如,我希望能够拥有[短代码]Hello World![/shortcode]输入一个名为$ShortCodeText的字符串,我该怎么做?