使用以下内容时遇到问题:
<?php echo excerpt(15); ?>
由于!我有一些页面(不幸的)有页面样式和小文本,不符合15个字符,所以发生的是摘录限制没有得到满足,所以它显示'一个小文本..然后<css> <styles><h1> <h2>
等等。
如何重写为15个字符的限制或MAX。所以,如果它不尽如人意的话。或者排除HTML /和CSS?
functions.php
中的摘录功能function excerpt($limit) {
$excerpt = explode(' ', get_the_excerpt(), $limit);
if (count($excerpt)>=$limit) {
array_pop($excerpt);
$excerpt = implode(" ",$excerpt).'...';
} else {
$excerpt = implode(" ",$excerpt);
}
$excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
return $excerpt;
}
function content($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'...';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'custom_trim_excerpt');
function custom_trim_excerpt($text) { // Fakes an excerpt if needed
global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = 35;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '...');
$text = implode(' ', $words);
}
}
return $text;
}
答案 0 :(得分:0)
你有三个选择(可能更多,这并不意味着详尽无遗)
放弃wordpress功能。通过使用自定义PHP将$ post-&gt; post_content传递给您自己的函数,您可以使用PHP的XML操作函数,特别是DOM manipulation或正则表达式来删除某些标记。
在运行摘录之前检查一下您的帖子内容。如果您可以通过检查“&lt;”的第一个位置来检查是否存在要在前15个字符内开始的标记使用strpos的字符,然后你可以使用普通的if / else。
正确使用wordpresses功能,您可以通过过滤器更改摘录的处理方式。您可以删除默认功能并将其替换为您自己的功能。 This link特别对于解释如何在wordpress中自定义摘录功能非常有用,特别是在摘录中允许或不允许标记。