从摘要中移除WordPress短代码

编程语言 2026-07-09

我的当前WordPress主题在列表文章样式中使用摘要函数来显示35个单词

<?php echo wp_trim_words( get_the_content(), 35, '...' ); ?>

在我的某篇文章中,出现了一个我不想显示的短代码。我尝试了上网搜索到的所有“隐藏短代码”的方法。

示例:

add_filter('the_excerpt', 'strip_shortcodes');

我已经把想要移除/隐藏的短代码标出。

enter image description here

解决方案

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() 进行处理。这样就会执行短代码并裁剪渲染后的输出:

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章