将过滤器应用于WordPress短代码输出

时间:2015-12-07 15:48:07

标签: wordpress shortcode

我想修改WordPress插件的短代码输出。

我尝试了以下内容:

$myShortcode = do_shortcode('[print_responsive_thumbnail_slider id="1"]');
echo apply_filters('new_shortcode_filter',$myShortcode);


add_filter('new_shortcode_filter','new_shortcode_filter_callback');

function new_shortcode_filter_callback($myShortcode){
    //modify content right here

    return $modifiedContent;
}

不幸的是,过滤器没有应用于短代码输出。

如果我这样做以覆盖短代码并修改输出,则会出现由do_shortcode函数引起的无限循环:

function update_shortcode_slider_content() {
    $sliderContent = do_shortcode('[print_responsive_thumbnail_slider id="1"]');;
    //some magic

    return $modifiedSliderContent;
}
add_shortcode('print_responsive_thumbnail_slider', 'update_shortcode_slider_content');

我做错了什么或是否有其他/更好的方法来修改短代码的输出?

1 个答案:

答案 0 :(得分:3)

WordPress 4.7引入了一个新的过滤器do_shortcode_tag来做到这一点。 https://www.shawnhooper.ca/2017/01/do-shortcode-tag/