我需要为每个短代码(每个短代码注册或只是页面中的每个短代码)过滤$atts
数组,但无法找到一种方法,也可以满足属性名称可能不适用的情况事先知道。
示例:[shortcode known_attribute="value" 8c69f120="unknown attribute"]
我尝试循环遍历$GLOBALS['shortcode_tags']
并使用shortcode_atts_{$shortcode}
过滤器,但因为shortcode_atts
是array_merge
和未设置的组合而不是$pairs
数组的组合,这不会奏效。
有没有人知道如何为每个短代码应用过滤器$atts
,以满足事先不一定知道属性名称的短代码的需要?
答案 0 :(得分:1)
我不确定您要完全尝试做什么,但您可以捕获任何属性并使用以下内容修改(或取消设置)相应的输出:
foreach( array_keys( $GLOBALS['shortcode_tags'] ) as $tag ) {
add_filter( "shortcode_atts_{$tag}", "so26932914_shortcode_atts", 25, 3 );
}
function so26932914_shortcode_atts( $out, $pairs, $atts )
{
if( isset( $atts['foo'] ) && '' != $atts['foo'] )
$out['foo'] = 'bar';
return $out;
}
一个重要的警告:定义第三个$shortcode
参数需要不,这对于$shortcode_atts_{$shortcode}
过滤器来说是必不可少的。