php max excerpt length不能长度(不包括html / css)

时间:2014-12-19 21:43:37

标签: php wordpress

使用以下内容时遇到问题:

<?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(']]>', ']]&gt;', $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;
}

1 个答案:

答案 0 :(得分:0)

你有三个选择(可能更多,这并不意味着详尽无遗)

  1. 放弃wordpress功能。通过使用自定义PHP将$ post-&gt; post_content传递给您自己的函数,您可以使用PHP的XML操作函数,特别是DOM manipulation或正则表达式来删除某些标记。

  2. 在运行摘录之前检查一下您的帖子内容。如果您可以通过检查“&lt;”的第一个位置来检查是否存在要在前15个字符内开始的标记使用strpos的字符,然后你可以使用普通的if / else。

  3. 正确使用wordpresses功能,您可以通过过滤器更改摘录的处理方式。您可以删除默认功能并将其替换为您自己的功能。 This link特别对于解释如何在wordpress中自定义摘录功能非常有用,特别是在摘录中允许或不允许标记。