我正在编写一个扩展现有插件行为的wordpress插件。
现有的插件定义了一个名为[original]
的短代码,我定义了一个名为[wrapper]
的短代码,它添加了一些功能,但基本上表现相同。
这是我写的代码:
function wrapper_shortcode($atts,$content)
{
//Do something...
return do_shortcode("[original]$content[/original]");
}
add_shortcode( 'wrapper', 'wrapper_shortcode' );
我的问题是,如何传递$atts
短代码旁边的属性([original]
),有没有更好的方法来调用do_shortcode()
函数?
答案 0 :(得分:1)
如果我理解正确,您希望获取所有短代码参数并将其从wrapper
盲目地传递到您的original
短代码。
我会不建议在未经适当验证的情况下传递参数。
您有几个选择:
正如白银建议的那样,删除original
并将其替换为您自己的修改版本(因为您无法更新插件)。每次发布插件后都要更新它。
添加您要验证并通过的参数。并在回报中将其发回。
不推荐 - 只因为你可以;并不意味着你应该这样做。
听起来好像你想要做以下事情 - 如果你这样做,你真的可能会遇到麻烦,除非你验证每个属性:
function wrapper_shortcode($atts, $content) {
$o_shortcode_atts = " ";
foreach ($atts as $key_att => $val_att) {
// Validate $key_att and $val_att here - FOR SECURITY!!!
$o_shortcode_atts = $o_shortcode_atts . " ".$key_att."=\"".$val_att."\" ";
}
trim($o_shortcode_atts," ");
// Do something...
return do_shortcode("[original".$o_shortcode_atts."]".$content."[/original]");
}
警告 - 如果您没有确认,这可能会导致问题