限制不同摘录的字符数量

时间:2013-09-09 作者:Poisontonomes

我一直在使用another answer 在此处,限制摘录中显示的字符数;

add_filter(\'wp_trim_excerpt\', function($text){    
    $max_length = 140;
    if(mb_strlen($text, \'UTF-8\') > $max_length){
        $split_pos = mb_strpos(wordwrap($text, $max_length), "\\n", 0, \'UTF-8\');
        $text = mb_substr($text, 0, $split_pos, \'UTF-8\');
    }

    return $text;
});
问题是我现在有多个摘录,一个全局字符限制不再是可行的选择。

有没有办法定义个人摘录的字符限制?(例如,一个摘录可以显示150个字符,而另一个摘录可以显示200个字符?)

1 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

将以下代码放入functions.php:

// TRUNCK STRING TO SHORT THE STRINGS
function trunck_string($str = "", $len = 150, $more = \'true\') {

    if ($str == "") return $str;
    if (is_array($str)) return $str;
    $str = strip_tags($str);    
    $str = trim($str);
    // if it\'s les than the size given, then return it

    if (strlen($str) <= $len) return $str;

    // else get that size of text
    $str = substr($str, 0, $len);
    // backtrack to the end of a word
    if ($str != "") {
      // check to see if there are any spaces left
      if (!substr_count($str , " ")) {
        if ($more == \'true\') $str .= "...";
        return $str;
      }
      // backtrack
      while(strlen($str) && ($str[strlen($str)-1] != " ")) {
        $str = substr($str, 0, -1);
      }
      $str = substr($str, 0, -1);
      if ($more == \'true\') $str .= "...";
      if ($more != \'true\' and $more != \'false\') $str .= $more;
    }
    return $str;
}


// the_content() WITHOUT IMAGES
// GET the_content() BUT EXCLUDE <img> OR <img/> TAGS THEN ECHO the_content()
// And ADD <a>DETAILS</a>
function custom_excerpt( $Trunckvalue = null ) {
    ob_start();
    the_content();
    $postOutput = preg_replace(\'/<img[^>]+./\',\'\', ob_get_contents());
    ob_end_clean();
    echo trunck_string( $postOutput, $Trunckvalue, true ); ?>
    <a class="read-more" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" rel="bookmark">DETAILS</a>
    <?php
}
现在所需的一切都是ready.

解释

正如您所理解的,在我们正在使用的第二个或最后一个函数中the_content() 并且不包括<img/> 标记,以便它们显示为the_excerpt(). 然后我们将trunck值传递到新的自定义摘录中。并使用custom_excerpt() 可以在任何我们可以使用新摘录的地方使用。

使用方法<?php the_excerpt() ?>, 只需调用<?php custom_excerpt() ?>. 如果要控制摘录长度,只需将长度输入数字,如:<?php custom_excerpt(250) ?>.

结束

相关推荐

Get a raw value of excerpt

我正在尝试使用以下代码打印文章摘录:<?php echo $post->post_excerpt; ?> 它工作得很好。唯一的问题是,显然我也有预定义的样式,我无法摆脱它们。如何获取原始文本?是否有其他函数,或者是否有只返回文本的php函数?