WP的最新版本确实改善了字幕参数的可过滤性,因此我认为这个新答案将具有最小的占用空间和最安全的操作。
我们需要做的是直接过滤$atts[\'caption\']
在期间shortcode_atts()
对于[caption]
短代码。我们可以用shortcode_atts_caption
仅影响标题短代码的筛选器。
作为奖励,我添加了一个注释掉的行,它将在运行之前测试特定短代码的标题do_shortcode()
. 如果您只想在标题中启用特定的短代码(我使用它只启用Shortcode Shortcode). 但要小心:do_shortcode()
将处理所有短代码,而不仅仅是您测试的短代码。
/**
* Filter Caption shortcode attributes to enable the [shortcode] shortcode inside caption text
*
* WP doesn\'t run do_shortcode on the \'caption\' text value parsed out of [caption], which means
* the [shortcode] shortcode doesn\'t work.
*
* @param array $out atts array as determined by WP to be returned after filtering
* @param array $pairs
* @param array $atts
* @return filtered $out atts
*/
function wpse_113416_filter_shortcode_atts_caption($out, $pairs, $atts) {
// OPTIONAL: Look for a specific shortcode before running do_shortcode
// if (has_shortcode($out[\'caption\'], \'shortcode_to_look_for\'))
$out[\'caption\'] = do_shortcode($out[\'caption\']);
return $out;
}
add_filter(\'shortcode_atts_caption\', \'wpse_113416_filter_shortcode_atts_caption\', 10, 3);