存档

文章标签 ‘添加新标签’

WordPress 首页、索引及搜索页的自动摘要

2009年5月10日 1 条评论

wordpress的首页、索引页和搜索结果页默认是显示文章全文,这样首页显示不了几篇文章,还会很长,我想谁看到长达好几屏的网页都会倒胃口吧,更要命的是,这样会造成很多网页内容的重复,这是搜索引擎的一个戒律,很不利于SEO,wordpress有自动索引的功能,只要在模板里调用相关函数就行了, the_content()调用全文, the_excerpt()就只调用摘要了;在模板文件夹的index.php,archives.php,和search.php中找到the_content()替换成the_excerpt()就行了。

其实wordpress自动摘要是由一个函数控制的,在formatting.php中,找到function wp_trim_excerpt($text)。因为wordpress是西方人的东西,它是按照单词数截取文章内容来生成摘要的,可是中文里哪有单词,于是有人想到了用”n”来控制,其实这样就是按照段落来截取,文章的段落可长可短,变化极大,这样生成的摘要很不协调,有的能长达上千字,有的却只有几十个字。我的方法是最原始的,还是通过字符数来吧,由于汉字的编码是多字节的,所以截取的时候要考虑到可能乱码的问题,php有个扩展php_mbstring,在php.ini中找到extension=php_mbstring.dll,去掉前面的分号启用就可以了,其实现在的主机空间绝大部分都是启用了的,那我们就可以直接用mb_substr来截取中文字符了,我最终修改的函数是这样:

function wp_trim_excerpt($text) {

if ( ” == $text ) {

$text = get_the_content(”);

$text = strip_shortcodes( $text );

$text = apply_filters(‘the_content’, $text);

$text = str_replace(‘]]>’, ‘]]>’, $text);

$text = strip_tags($text);

$excerpt_length =350;

$encoding=’utf-8′;

if(mb_strlen($text,$encoding)>$excerpt_length)

$text=mb_substr($text,0,$excerpt_length,$encoding).’<p />……<a href=”‘ . get_permalink($post->ID) .’”>[阅读全文]</a>’;

}

return $text;

}