编解码器说


shortcode_atts()将用户简码属性与已知属性结合在一起,并在需要时填写默认值。结果将包含已知属性中的每个键,并与shortcode属性中的值合并。


对我来说没有多大意义(我是新手)。

这里是一个示例:

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();  


请您能解释一下吗?

#1 楼

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

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

请勿使用extract()。这种非常糟糕的代码样式。即使在内核中,它的用法也已被弃用,这意味着... :)

您的示例应写为:

$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'] );


评论


谢谢。我不知道摘录,所以也谢谢!

–mattnewbie
13年5月15日在20:07

WP编码标准也不鼓励extract()。参见make.wordpress.org/core/handbook/best-practices/…

– alexg
16年2月17日在9:38

警告!不要在不可信的数据上使用extract(),例如用户输入。是不安全的,您可能会发生许多冲突,并且还会覆盖以前的某些代码。那只能在代码的某些部分中使用,这些部分将使您知道期望什么和需要什么。

–艾维安·斯特凡·斯蒂皮奇(Ivijan StefanStipić)
17年4月13日在15:02