老实说,这没什么用。如果代码如您所描述的那样,那么它所做的就是在内容的任一侧添加句号。如果不是这样,那么可能会丢失代码。
其他部分:
什么是extract
?
extract
是许多旧的WP代码示例中使用的PHP函数,这是一种非常糟糕的做法。它接受数组中的键和值,并将它们转换为变量。
问题是,您不知道数组中有什么以及它将创建什么变量。extract
覆盖其他变量可能会导致问题。编辑器和工具在使用extract
, 并将生成错误警告。
extract
还鼓励编写糟糕的代码。通过依赖以这种方式创建的变量,如果这些值从一开始就不在数组中,就会遇到问题,从而生成通知。始终避免extract
, 作者使用它是一个错误。这不是好的做法。
在您问题中的示例中extract
甚至不使用调用,结果可以简化为:
function my_shortcode($atts, $content = \'\'){
return ".$content.";
}
add_shortcode("warrning_dialog", "my_shortcode");
怎么样shortcode_atts
?
extract
需要一个键和值的数组,它将转换为变量和值,那么这个数组来自哪里呢?
它来自$atts
传递给短代码的属性,例如。[shortcode att1="value" another_attribute="anothervalue"]content[/shortcode]
但是如果用户没有指定我们需要的属性呢?好shortcode_atts
让我们获取属性列表,并添加缺少的默认值。这样他们就一直在那里:
shortcode_atts(array("type" => "warrning"), $atts)
最好写为:
$atts = shortcode_atts( [
\'type\' => \'warrning\'
], $atts);
如果需要访问属性类型,可以使用
$atts[\'type\']
那怎么办".$content."
?
这只是一个嵌入了变量的字符串。例如:
$name = \'Tom\';
echo "My name is $name";
上述代码将输出:
我叫汤姆
这也是一种将安全问题引入站点的好方法。这是因为这种方式不可能延迟逃跑/消毒。请始终使用串联。
".$content."
与相同\'.\'.$content.\'.\'