带有短码转义的_excerpt()或get_the_excerpt

时间:2012-12-10 作者:N2Mystic

我有几篇帖子在第一个字符周围有dropcap快捷码,如下所示:

[dropcap]T[/dropcap]his is a dropcap. 
替换此短代码将产生:

<span class="dropcap">T</span>his is a dropcap.
但是,当我在这些帖子上调用\\u摘录()或获取\\u摘录()时,它返回:

"his is a dropcap".
我需要它返回“这是一个dropcap”,就像不存在任何短代码一样。

2 个回复
最合适的回答,由SO网友:Ahmad M 整理而成

您可以通过连接到get_the_excerpt 过滤并覆盖默认值wp_trim_excerpt 函数,该函数负责从芯片指出的摘录中剥离短码标签:

add_filter(\'get_the_excerpt\', \'do_my_shortcode_in_excerpt\');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}
这适用于两者the_excerpt()get_the_excerpt() 输出。如果您只想将其应用于the_excerpt() 输出,挂钩到the_excerpt 过滤器:

add_filter(\'the_excerpt\', \'do_my_shortcode_in_excerpt\');
function do_my_shortcode_in_excerpt($excerpt) {
    return do_shortcode(wp_trim_words(get_the_content(), 55));
}

SO网友:Chip Bennett

这个the_excerpt() 函数不分析短代码。WordPress实际上从摘录中删除了整个短代码。由于“T”被封装在一个短代码中,因此它不会通过the_excerpt().

最简单的解决方案可能是通过编辑帖子屏幕上的帖子摘录元框,为使用Dropcap快捷码的帖子创建一个自定义摘录。

更好的解决方案可能是抛弃一个只为完成某些事情而存在的短代码,这些事情只需使用CSS规则即可可靠地完成。

结束