我有个问题the_excerpt
滤器出于某种原因,如果在帖子列表中显示的帖子只包含短代码,它将无论如何执行这些短代码。
我想要的是,如果它是一个封闭的短代码,则显示内容;如果它是一个自动关闭的短代码,则将其全部删除,如果是这种情况,则返回一个空字符串。
我用这个函数去掉所有的短代码(因为strip_shortcodes($content))
也不起作用:
add_filter(\'the_excerpt\', \'my_custom_excerpt\' );
function my_custom_excerpt() {
global $post;
$post_excerpt = $post->post_excerpt != "" ? $post->post_excerpt : strip_tags($post->post_content);
$excerpt_more = "...";
$excerpt_length = 30;
$clean_excerpt = strpos($post_excerpt, \'...\') ? current(explode($post_excerpt, $excerpt_more, \'1\')) : $post_excerpt;
$clean_excerpt = strip_shortcodes(preg_replace("/\\[[\\/]?[^\\]]*\\]/", "", $clean_excerpt));
$excerpt_word_array = explode(\' \', $clean_excerpt);
$word_count = count($excerpt_word_array);
$excerpt_word_array = array_slice($excerpt_word_array, 0, $excerpt_length);
if ($word_count > $excerpt_length) {
$excerpt = implode(\' \', $excerpt_word_array) . $excerpt_more;
}
else {
$excerpt = implode(\' \', $excerpt_word_array);
}
return $excerpt;
}
我有一个自定义的短代码,它生成一个图像滑块,在html之后,它输出一个带有slider init函数的脚本标记(基本内容)。
在这篇文章的摘录中,我看到了javascript输出,这非常奇怪。
访问帖子时,我看到滑块按预期运行,html结构看起来很好。
无论如何如果您有任何关于发生这种情况的原因和可能的修复方法的指针,那就太好了。
PS:上面的代码可以工作,if语句在我的测试中是可以的,问题是只有当帖子只包含短代码时,事情变得奇怪。如果我在摘录变量中添加了一些内容,那么它将按预期工作,并且只打印出我添加的内容。
所以如果我这样做了
else {
$excerpt = implode(\' \', $excerpt_word_array)."something";
}
我看到了这篇文章的摘录,其中只包含我的短代码打印出来的“某物”。如前所述,如果没有它,它将打印javascript内容。这也很奇怪。