如何过滤WordPress中每个短代码的atts

时间:2014-11-14 15:05:03

标签: shortcode wordpress

我需要为每个短代码(每个短代码注册或只是页面中的每个短代码)过滤$atts数组,但无法找到一种方法,也可以满足属性名称可能不适用的情况事先知道。

示例:[shortcode known_attribute="value" 8c69f120="unknown attribute"]

我尝试循环遍历$GLOBALS['shortcode_tags']并使用shortcode_atts_{$shortcode}过滤器,但因为shortcode_attsarray_merge和未设置的组合而不是$pairs数组的组合,这不会奏效。

有没有人知道如何为每个短代码应用过滤器$atts,以满足事先不一定知道属性名称的短代码的需要?

1 个答案:

答案 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}过滤器来说是必不可少的。