SHORTCODE_ATTS()中的$ATTS参数是什么?

时间:2020-05-22 作者:Álvaro Franz

这个WordPress developers reference page for shortcode_atts() 国家:

$atts(array)(必选)用户在shortcode标记中定义的属性。

但我不理解这个定义。

例如,在WP Frontend Profile 插件:

$atts = shortcode_atts(
     [
     \'role\' => \'\',
     ],
     $atts
);
据我所知,shortcode\\u atts()用于在shortcode属性和PHP数组之间创建映射。

但我不明白$atts参数的用途是什么。

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

当用户写入短代码时:

[my_shortcode att1="Attribute 1 value" att2="Attribute 2 value"]
这些属性作为数组作为第一个参数传递给shortcode的回调函数:

function my_shortcode_callback( $atts ) {
    // $atts = array(
    //  \'att1\' => \'Attribute 1 value\',
    //  \'att2\' => \'Attribute 2 value\',
    // );
}
add_shortcode( \'my_shortcode\', \'my_shortcode_callback\' );
功能shortcode_atts():

将用户属性与已知属性相结合,并在需要时填写默认值。

所以你用shortcode_atts() 要创建具有默认值的数组,除用户提供的任何属性外,其他所有受支持的属性均受支持。为此,将所有支持的属性及其默认值的数组作为第一个参数传递,并将用户提供的属性作为第二个参数传递。因此,第二个参数将是传递给回调函数的相同数组:

function my_shortcode_callback( $user_atts ) {
    // $user_atts = array(
    //  \'att1\' => \'Attribute 1 value\',
    //  \'att2\' => \'Attribute 2 value\',
    // );

    $default_atts = array(
        \'att1\' => \'Attribute 1 default\',
        \'att2\' => \'Attribute 2 default\',
        \'att3\' => \'Attribute 3 default\',
    );

    $atts = shortcode_atts( $default_atts, $user_atts, \'my_shortcode\' );

    // $atts = array(
    //  \'att1\' => \'Attribute 1 value\',
    //  \'att2\' => \'Attribute 2 value\',
    //  \'att3\' => \'Attribute 3 default\',
    // );
}
add_shortcode( \'my_shortcode\', \'my_shortcode_callback\' );
你这样做是为了你可以使用$atts[\'att3\'] 如果用户未输入,则不会导致PHP错误att3="Attribute 3 value" 放置短代码时。

的第三个参数shorcode_atts() 应设置为短代码名称。这样就可以像这样过滤短代码属性:

add_filter(
    \'shortcode_atts_my_shortcode\',
    function( $atts ) {
         $atts[\'atts2\'] = \'Attribute 2 override\';

         return $atts;
    }
);

相关推荐

Custom Post type shortcodes

我使用高级自定义字段在我的主题中创建自定义帖子类型(功能)。我想知道如何创建自定义帖子类型的短代码。因此,我只使用任何页面的自定义帖子类型的短代码来显示我在自定义帖子类型(功能)中添加的信息。