在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 个评论