如果想在Wordpress首页显示日志摘要,就得在发表文章的时候,在某一位置输入more标签,个人很不习惯这个方式,觉得很麻烦,所以一直以来都是用另外一个自动截取日志部分内容的方式来显示,这样就可以不用每次写日志要插入more标签了。修改方法如下:
在主题文件夹下的index.php文件里,找到如下代码(以默认的主题为例子):
<?php the_content(__('Read the rest of this entry »', 'kubrick')); ?>
替换成:
<?php $permalink=get_permalink($ID); if(empty($post->post_password)){ if (!(strtoupper(get_locale()) == 'ZH_CN')){ echo '<p>'; the_content_rss('', true, '', 55); echo '</p>'; }else{ $exp=mb_substr(strip_tags($post->post_content),0,300); echo '<p>'.$exp.' ...... '; } _e("</p><div class=\"morelink\"><a href=\"$permalink\" class=\"more\">阅读全文 ...</a></div>"); }else{ _e("<p>Protected post, Enter your password to view: "); _e("<a href=\"$permalink\">Click me to go and enter the password »</a></p>"); } ?>
可以通过修改上面代码$exp=mb_substr(strip_tags($post->post_content),0,300);后面的300数值的大小来控制首页需要输出的内容大小。另外,还可以通过css独立控制“阅读全文”的样式。
上面这个方法的缺陷在于,首页输出的摘要内容不包括里面链接和图片,对于除了文字外的内容会自动过滤(到首页看看我这篇日志的摘要,你就明白了。),只是纯文字内容。对于追求图文并茂的童鞋来说,相当的遗憾。另外,每次换主题,如果没有替换上面代码,则首页都是全文内容的输出。
不过图片的输出可以通过另外独立的php代码来实现,或者通过wordpress的自定义域来实现,只是自定义域的使用也是比较麻烦的就是了。
同时还有使用插件实现more标签功能的方法,如果你不介意在自己原有插件基础上再多加插件的话:
1、wp-kit-cn
wp-kit-cn是个不错的插件,最新评论输出,最新文章输出,N天内留言最多用户输出,本周或本月内留言最多用户输出,随机文章输出,评论最多的文章输出,最近回响输出,自动摘要算法,更加适合中文使用,wp-kit-cn官方下载地址。
使用时,要把the_content函数改为the_excerpt函数才能截断...
不过wp-kit-cn实现的效果和我上面提供的代码一样,不能显示图片。
2、wp-limit-posts-automatically
wp-limit-posts-automatically官方下载地址,这个插件支持摘要输出图片和视频等,不过遗憾的是据说对中文支持不大友好。不过你可以下载这个插件经过牛人修改后的版本wp-summary-automatically。
修改后的插件可以设置前几个段落为摘要,默认是前3段,不用修改the_content为the_excerpt了,如果没有设置不足设置的段落数,就不显示"阅读更多"链接词了。
3、通过function.php文件
function my_excerpts($content = false) { // If is the home page, an archive, or search results if(is_front_page() || is_archive() || is_search()) : global $post; $content = $post->post_excerpt; // If an excerpt is set in the Optional Excerpt box if($content) : $content = apply_filters('the_excerpt', $content); // If no excerpt is set else : $content = $post->post_content; $excerpt_length = 55; $words = explode(' ', $content, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '...'); $content = implode(' ', $words); endif; $content = '<p>' . $content . '</p>'; endif; endif; // Make sure to return the content return $content; } add_filter('the_content', 'my_excerpts');
这个方法对中文支持好吗?会出现乱码否?
我介绍了3个方法,不知道你问的是哪一种。我自己现在用的是第一种,没出现过乱码。
直接用摘要函数不是很好吗?
我觉得摘要函数更麻烦,还要另外在复制内容,估计对数据库又是一个负担。
以前是用插件 现在还是用more了 感觉这样更灵活一些
more确实比较灵活,爱截哪里就哪里。就是数据库里的文章每篇都有这个标签,感觉不爽
博主,你这个博客静态化了吗?
没有,伪静态的
俺是懒人,直接用插件。。。
你用的是什么插件?
我看看哈。叫wp-summary-automatically,装上后就成中文的了,叫WP自动摘要。是按照段落截断了,如有需要俺发给你
知道名字就好了,谢谢!
好像你的博客单篇日志无法访问哦,链接有错!
现在应该好了吧?那个<不知怎么变成html的编码符号<了。我发誓自己没有碰过那里
现在好了,很神奇,那个代码是显示日志题目的代码啊。
不知道咋个的,我更喜欢用more的办法 ,自定义域很强大,大有前途。
我还是喜欢自动搞定的
我用的就是这个方法,不过这个函数必须要PHP5才支持,不过WP2.9必须是PHP5了,呵呵
你的主题有设置按分类显示图片,弥补了这种方法不显示图片的不足,不过按分类显示图片也就是你的主题适合使用,刚好我不怎么感冒图片,不然还得去找个自动显示图片简单点的方法。
mb函数不一定要php5,只是这个函数php默认安装是不包含的。