如何限制摘录中的字符长度?

时间:2012-10-30 作者:Jornes

Possible Duplicate:
excerpt in characters

看完这篇文章后,我有一个问题(How to highlight search terms without plugin). 我非常喜欢这个功能(没有插件的搜索词),但字符长度太长了。我应该添加什么php代码来缩短摘录?如果有人能提出建议,我将不胜感激。非常感谢。

2 个回复
最合适的回答,由SO网友:dipali 整理而成

在函数中添加这些行。php文件

function custom_excerpt_length( $length ) {
        return 20;
    }
    add_filter( \'excerpt_length\', \'custom_excerpt_length\', 999 );

SO网友:Adam

除了Deepa的答案提供的上述过滤器挂钩之外,这里还有一个附加功能,可以帮助您扩展the_excerpt 在两个方面,

允许您

限制摘录的字符数,但不要截断最后一个单词。这将允许您返回最大数量的字符,但保留完整的单词,因此仅返回符合指定数量限制的单词,并允许您指定摘录的来源。

function get_excerpt($limit, $source = null){

    $excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
    $excerpt = preg_replace(" (\\[.*?\\])",\'\',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $limit);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( \'/\\s+/\', \' \', $excerpt));
    $excerpt = $excerpt.\'... <a href="\'.get_permalink($post->ID).\'">more</a>\';
    return $excerpt;
}

/*
Sample...  Lorem ipsum habitant morbi (26 characters total) 

Returns first three words which is exactly 21 characters including spaces
Example..  echo get_excerpt(21);  
Result...  Lorem ipsum habitant 

Returns same as above, not enough characters in limit to return last word
Example..  echo get_excerpt(24);    
Result...  Lorem ipsum habitant  

Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. 
Example..  echo get_excerpt(30);    
Result...  Lorem ipsum habitant morbi
*/
此函数可以在整个主题文件中多次使用,每个文件都指定了不同的字符限制。

此函数能够检索以下内容的摘录:,

  • the_content
  • the_excerpt
例如,如果您的帖子在帖子编辑器屏幕上的\\u摘录框中包含文本,但希望从\\u内容正文中提取摘录,而不是针对特殊用例,那么您可以这样做;

get_excerpt(140, \'the_content\'); //excerpt is grabbed from get_the_content
这会告诉函数您希望从中获得前140个字符the_content, 无论是否在中设置摘录the_excerpt

get_excerpt(140); //excerpt is grabbed from get_the_excerpt
这会告诉函数您希望从中获得前140个字符the_excerpt 首先,如果没有摘录,the_content 将用作回退。

该功能可以改进,以提高效率,或结合使用WordPress过滤器the_contentthe_excerpt 或者只是在有no suitable, 内置WordPress API替代方案。

结束

相关推荐

将$MORE_LINK_TEXT参数添加到_excerpt()

这filter 在Wordpress抄本上add_filter(\'excerpt_more\', \'new_excerpt_more\'); function new_excerpt_more($more) { global $post; return \'<a class=\"moretag\" href=\"\'. get_permalink($post->ID) . \'\"> &hellip; </a>\'