快捷码不会将属性传递给我的函数

时间:2018-05-15 作者:TinyTiger

这个问题不同于my earlier question about shortcodes. 是的,他们都在谈论短代码,但他们的要求不同,因此应该分开。否则,此网站上的所有“短代码”问题都需要标记为重复。

Original question:

我的短代码不会将属性传递给函数。

以下是我帖子中使用的短代码:[points custom_field="company_location"]

下面是我的短代码的函数:

// Add Shortcode
function points_shortcode( $atts ) {
    // Attributes
    $atts = shortcode_atts(
        array(
            \'custom_field\' => \'\',
        ),
        $atts,
        \'points\'
    );
    return bg_calculate_points ($custom_field);
}
add_shortcode( \'points\', \'points_shortcode\' );
在执行var_dump 在我的函数上显示NULL 当我期待看到company_location 由shortcode属性传递的字符串。

function bg_calculate_points ($field) {
    var_dump($field);
}
我做错了什么?

1 个回复
SO网友:Iceable

shortcode_atts() 返回一个数组(分配给$atts 在代码中)。

它不会创建新变量,如extract() Will-顺便说一下,使用extract() 通常不建议使用。

所以在你的代码中,$custom_field (第11行)未定义。

您正在寻找的价值$atts[\'custom_field\'] 相反

将第11行更改为return bg_calculate_points( $atts[\'custom_field\'] ); 将修复它。

结束

相关推荐

Filter content in shortcode

所以,我对这个短代码有点陌生,但我现在几乎已经完成了我需要的工作。(检查下面的代码)我想在我的短代码中过滤我的内容,我有一个由ACF插件添加字段的CPT。现在我需要的是,当我放置[speaker\\u overview\\u 2017 year=2017]时,它只显示2017年有价值的项目,当我做[speaker\\u overview\\u 2017 year=2018]时,它只显示2018年,当我做[speaker\\u overview\\u 2017]时,它显示所有项目。这是我的短代码,有人能帮我