wordpress获取文章摘要excerpt时如何过滤掉短代码

wordpress获取文章摘要excerpt时如何过滤掉短代码

在WordPress中,我们在获取文章SEO的description时,如果文章开头有短代码,那么可能会带上短代码的内容,这样很不友好。那么你希望过滤掉短代码,可以使用一些内置函数和自定义代码来实现。以下是一个方法,你可以通过添加自定义函数到你的主题的 functions.php 文...

在WordPress中,我们在获取文章SEO的description时,如果文章开头有短代码,那么可能会带上短代码的内容,这样很不友好。那么你希望过滤掉短代码,可以使用一些内置函数和自定义代码来实现。以下是一个方法,你可以通过添加自定义函数到你的主题的 functions.php 文件来实现这个功能。

步骤 1: 创建一个自定义函数来移除短代码

首先,创建一个自定义函数来移除短代码。你可以使用 strip_shortcodes 函数,这个函数会移除内容中的短代码,但不会移除短代码生成的HTML(如果有的话)。

function remove_shortcodes_from_content($content) { return strip_shortcodes($content); }

步骤 2: 修改获取摘要的函数

WordPress 有一个内置函数 wp_trim_excerpt,用于生成文章的摘要。为了在使用这个函数时移除短代码,你可以创建一个自定义的摘要函数。

function custom_wp_trim_excerpt($text) {
$raw_excerpt = $text;
if ( ” == $text ) {
$text = get_the_content(”);
$text = strip_shortcodes($text); // 移除短代码

$text = apply_filters(‘wp_trim_excerpt’, $text, $raw_excerpt);

$excerpt_more = apply_filters(‘excerpt_more’, ‘ ‘ . ‘[…]’);

if (mb_strlen($text) > 55) {
if (false !== strpos($text, ‘<!–more–>’)) {
$text = explode(‘<!–more–>’, $text, 2)[0];
} else {
$text = mb_substr($text, 0, 55) . $excerpt_more;
}
}
}
return apply_filters(‘wp_trim_excerpt’, $text, $raw_excerpt);
}
remove_filter(‘wp_trim_excerpt’, ‘wp_trim_excerpt’);
add_filter(‘wp_trim_excerpt’, ‘custom_wp_trim_excerpt’, 10, 1);

这个函数首先检查是否已经存在内容摘要,如果没有,它会获取文章内容并移除短代码。然后,它使用标准的WordPress摘要逻辑来生成摘要。

步骤 3: 使用自定义摘要函数

现在,每当你在模板文件中调用 the_excerpt() 时,它都会使用你自定义的摘要函数,从而移除短代码。

例如,在你的主题模板文件中,你可以这样调用摘要:the_excerpt();

注意事项

  • 上述方法会全局修改摘要生成逻辑。如果你只想在特定地方移除短代码,你可能需要更精细地控制何时应用这个自定义函数。
  • 如果你使用的是自定义字段或者高级自定义字段(ACF)来存储摘要,你可能需要在获取这些字段内容时也应用 strip_shortcodes 函数。
原文链接:https://www.dqzy.cn/2025/03/30/98.html,转载请注明出处。 1、本站所有源码资源(包括源代码、软件、学习资料等)仅供研究学习以及参考等合法使用,请勿用于商业用途以及违法使用。如本站不慎侵犯您的版权请联系我们,我们将及时处理,并撤下相关内容! 2、访问本站的用户必须明白,本站对所提供下载的软件和程序代码不拥有任何权利,其版权归该软件和程序代码的合法拥有者所有,请用户在下载使用前必须详细阅读并遵守软件作者的“使用许可协议”,本站仅仅是一个学习交流的平台。 3、如下载的压缩包需要解压密码,若无特殊说明,那么文件的解压密码则为:www.dqzy.cn。 4、点启资源网是一个免费且专业分享网站源码、图片素材、特效代码、教程文章、站长工具的平台。我们努力给站长提供好的资源!
0

评论0

请先
显示验证码
没有账号?注册  忘记密码?