从摘要中移除WordPress短代码
我的当前WordPress主题在列表文章样式中使用摘要函数来显示35个单词
<?php echo wp_trim_words( get_the_content(), 35, '...' ); ?>
在我的某篇文章中,出现了一个我不想显示的短代码。我尝试了上网搜索到的所有“隐藏短代码”的方法。
示例:
add_filter('the_excerpt', 'strip_shortcodes');
我已经把想要移除/隐藏的短代码标出。

解决方案
get_the_content() 不会展开短代码。
get_the_content() 不会展开短代码。
the_content(), 另一方面,会调用 the_content 过滤器,因此短代码会被展开。
尝试使用 the_content()。
备选方案1
我认为可以使用手动摘要。添加一个条件:当存在手动摘要时,不应使用自动摘要。
<?php
if ( has_excerpt() ) {
echo get_the_excerpt();
} else {
echo wp_trim_words( get_the_content(), 35, '...' );
}
?>
备选方案2
之所以 add_filter('the_excerpt', 'strip_shortcodes'); 对你不起作用,是因为你的主题完全绕过了标准摘要过滤器。
通过直接使用 get_the_content() 获取原始内容并将其直接传入 wp_trim_words(),标准的WordPress摘要过滤器(如 the_excerpt)从未被触发。
要修复这个问题,你需要在把内容传给裁剪函数之前先移除短代码。下面是两种最佳做法:
方案1:完全移除短代码(推荐)
如果你只是想让循环列表中不显示短代码文本,请按下面这样把 get_the_content() 包裹在原生WordPress strip_shortcodes() 函数中:
方案2:执行短代码而不是显示原始文本
如果短代码生成的文本实际是你想要包含在35字摘要中的内容,你应该先使用 do_shortcode() 进行处理。这样就会执行短代码并裁剪渲染后的输出: