标题短代码属性与默认值合并使用shortcode_atts
类似于so的功能(请参见中的源media.php
):
$atts = shortcode_atts( array(
\'id\' => \'\',
\'align\' => \'alignnone\',
\'width\' => \'\',
\'caption\' => \'\',
\'class\' => \'\',
), $attr, \'caption\' );
所以第三个
$shortcode
param与的值一起使用
\'caption\'
.
正如你在shortcode_atts
源代码,这意味着过滤器
"shortcode_atts_caption"
将被激发,允许您修改将使用的属性。
在您的情况下,您必须执行以下操作:
add_filter("shortcode_atts_caption", function($atts) {
if (isset($atts[\'caption\'])) {
$atts[\'caption\'] = do_shortcode($atts[\'caption\']);
}
return $atts;
});
请注意:如果标题将包含短代码
\'caption\'
这将导致无休止的循环。
这可以避免在调用之前删除筛选器do_shortcode
标题上:
function my_caption_shortcode($atts) {
if (isset($atts[\'caption\'])) {
// avoid endless loop
remove_filter( current_filter(), __FUNCTION__);
// apply shortcodes
$atts[\'caption\'] = do_shortcode($atts[\'caption\']);
// restore filter
add_filter(current_filter(), __FUNCTION__);
}
return $atts;
}
add_filter("shortcode_atts_caption", "my_caption_shortcode");