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