您唯一可以过滤的是短代码的属性:
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
重点是
$shortcode
是注册短代码时的第三个自变量。这个参数是非常新的,几乎没有短代码使用它,因此它将返回到默认值,即
string
属于
\'\'
.
这导致了一个有趣的结果:
add_filter( \'shortcode_atts_\', \'wpse112294_shortcode_atts_cb\' );
function wpse112294_shortcode_atts_cb( $out, $pairs, $atts )
{
// here we need to find a way to uniquely identify a shortcode
// for which we ain\'t got a name
// something that makes the shortcode unique:
$found = isset( $pairs[\'foo_attribute_key\'] );
if ( $found )
{
// Instantly remove this filter to save processing time:
remove_filter( current_filter(), __FUNCTION__ );
// do something stunning in here!
}
return $out;
}
所以,
yes, 我们有90%的机会过滤每个(!)的输出shortcode并尝试通过一些默认参数以某种方式识别该shortcode(
$pairs
) 或通过输入参数(不可能)。然后,我们终于可以处理输出了。我们能够处理字符串本身吗?不可以。这必须按照上面显示的@s\\u ha\\u dum的方式进行。