问题描述

食典说

shortcode_atts() combines user shortcode attributes with known attributes and fills in defaults when needed. The result will contain every key from the known attributes, merged with values from shortcode attributes.

对我来说没什么意义 (我是新手) 。

这是一个例子:

function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500',
'h' => '330',
'q' => '',
'geo' => 'US',
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();

请你解释一下

最佳解决方案

shortcode_atts()类似于 array_merge():它将第二个参数列表合并到第一个。区别是:它仅合并第一个参数 ($default) 中存在的键。

extract()然后获取数组键,将其设置为变量名称,并将其值作为变量值。 'w' => '500'在您的例子中成为 $w = '500'

不要使用 extract()。这个非常糟糕的代码风格。它的用法是 deprecated even in core,这意味着什么… 🙂

你的例子应该写成:

$args = shortcode_atts(
    array(
        'w'   => '500',
        'h'   => '330',
        'q'   => '',
        'geo' => 'US',
    ),
    $atts
);
$w = (int) $args['w'];
$h = (int) $args['h'];
$q = esc_attr( $args['q'] );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。