在WordPress上设置阅读量与首页摘要

WordPress居然没有自带阅读量显示…
摘要倒是有,然而显示摘要就不显示阅读全文了…
不显示摘要的话更惨,整篇文章出现到主页上,我只想显示几行字啊…
于是捣鼓了一下午,终于解决这两个问题了。

上午刚装好wp,发了两篇博文,突然想到一个问题,呃…在哪可以看阅读量?
上百度查了一下,wp没有自带显示阅读量的功能,再查一下,噢,原来有WP-PostViews这个插件。

那还等什么,装起来用呗。

装完之后,设置里会多出一个PostViews的选项,点进去是插件的设置,我比较懒,粗略介绍下就不一个个翻译了


从上到下分别是设置统计哪些用户的访问量,是否统计搜索机器人的访问量,显示阅读量的模板,在哪些模块显示阅读量

设置完后,我们可以先看一下插件里的wp-postviews.php到底是怎么写的,其他的不重要,我们只要知道the_views()是用来输出我们刚刚设置的Views Template就行

这里的should_views_be_displayed($views_options)我猜是用来检测是否允许输出到模块的,那么$display就是控制显示模式,true的时候直接echoflase的时候只把Views Template return出来。原理挺好懂的,我们可以先用function_exists('the_views')判断the_views是否存在,然后执行the_views()或者操作the_views(0)返回的值就好。至于要加在什么地方,抱歉了这个只能看自己的模板了。例如我用的wp2016主题,往footer那里加上这一段就可以达到下图效果。



那么剩下的就要靠自己摸索了。

然后是摘要,wp默认主题显示的是完整文章,有时候文章比较长,主页看起来就像内容页,然后去百度,找到一篇WordPress首页文章不显示全文的方法,这里我们只要知道the_content()可以输出全文,the_excerpt()可以输出摘要,当没有摘要的时候,the_excerpt()会自己截取文章开头当摘要就好。

然后我们在编辑页面打开摘要功能,再把模板文件里的the_content()改成the_excerpt()试试。

这效果,好像有点极端了,然后再回去看刚刚的文章,最后一节有一段代码可以加在functions.php文件里

1
2
3
4
5
6
7
8
9
function custom_excerpt_length( $length ) {
return 200;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

function new_excerpt_more( $more ) {
return '<a href="' . get_permalink() . '">阅读全文</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

勉强能看懂这里是扩展了原来的excerpt方法,限制了摘要的字数,还有修改摘要末尾的文字,但是这又出现了一个问题,没有写摘要的时候,主页截取了一段当摘要后面跟着阅读全文很正常,但是如果写了摘要的话,就不显示阅读全文了。

那么我干脆不用excerpt方法来添加阅读全文,自己在末尾添加链接好了。于是我把这两个改成自己的方法

1
2
3
4
5
6
7
8
9
function tz_excerpt_length( $length ) {
return 200;
}
add_filter( 'excerpt_length', 'tz_excerpt_length', 999 );

function tz_excerpt_more( $more ) {
return '...';
}
add_filter('excerpt_more', 'tz_excerpt_more');

在模板文件的the_excerpt()后面加一句

1
echo '<a href="' . get_permalink() . '">阅读全文</a>';

完美。

另外我很好奇那个999到底是什么参数,然后看了下官方文档

这让我想起了z-index:9999;