如何最好地在Media.php中为字幕应用DO_SHORTED代码

时间:2014-12-07 作者:Eddie

我希望能够在图像标题中添加短代码。我通过修改媒体成功地做到了这一点。php文件,在返回之前包含以下内容。

$atts[\'caption\']= do_shortcode($atts[\'caption\']);
它工作得很好,但我相信有更好的方法,因为我不想修改媒体。php每次我更新WP。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

标题短代码属性与默认值合并使用shortcode_atts 类似于so的功能(请参见中的源media.php):

$atts = shortcode_atts( array(
  \'id\'  => \'\',
  \'align\'   => \'alignnone\',
  \'width\'   => \'\',
  \'caption\' => \'\',
  \'class\' => \'\',
), $attr, \'caption\' );
所以第三个$shortcode param与的值一起使用\'caption\'.

正如你在shortcode_atts 源代码,这意味着过滤器

"shortcode_atts_caption"

将被激发,允许您修改将使用的属性。

在您的情况下,您必须执行以下操作:

add_filter("shortcode_atts_caption", function($atts) {
  if (isset($atts[\'caption\'])) {
    $atts[\'caption\'] = do_shortcode($atts[\'caption\']);
  }
  return $atts;
});
请注意:如果标题将包含短代码\'caption\' 这将导致无休止的循环。

这可以避免在调用之前删除筛选器do_shortcode 标题上:

function my_caption_shortcode($atts) {
  if (isset($atts[\'caption\'])) {
    // avoid endless loop
    remove_filter( current_filter(), __FUNCTION__);
    // apply shortcodes
    $atts[\'caption\'] = do_shortcode($atts[\'caption\']);
    // restore filter
    add_filter(current_filter(), __FUNCTION__);
  }
  return $atts;
}

add_filter("shortcode_atts_caption", "my_caption_shortcode");

结束

相关推荐

Call Shortcode on wp_footer

是否可以在帖子/页面内容区域之外调用快捷码?我试图用以下代码将其添加到wp\\U页脚,但它返回字符串:add_shortcode(\'eps_pop\', \'init\'); function indtable_display_front_end($atts ) { global $post; extract( shortcode_atts( array( \'id\' => \'\' ), $atts ) );&#x