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

在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 函数。

评论0

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

社交账号快速登录