WordPress中记录文章浏览次数的插件最有名的要数wp postviews,这款插件很好用,它将文章浏览次数(post views)以自定义字段post meta的形式保存到数据库中,因此在编辑文章页面,如果在显示选项中开启自定义栏目,就能看到wp postviews在每篇文章中留下的足迹,修改浏览次数自然是小菜一碟。
但插件往往带有太多的功能,多到有些根本用不到,如果知道每个插件实现主要功能的核心方法,我们的自由度会更大,可以定制甚至抛开插件。wp postviews记录文章浏览次数的核心方法就是自定义字段。
不用插件,如何记录文章次数
插件也不过是创建了一个自定义字段记录文章次数,当文章刷新时更新一下这个字段,用代码实现道理相同,首先定义两个函数:
- 用于记录文章浏览次数,每次刷新页面时都会更新自定义字段的函数setPostViews($postID)
- 用于读取文章里浏览次数在页面上显示的代码getPostViews($postID)
代码放在主题的functions.php中
如何使用
打开single.php(如果是twentyeleven或者twentyten,放在content-single.php),将setPostViews($postID)放到主循环中
...
...
只要在主循环内部即可,如果要记录page的点击次数,按照相同的方法修改page.php(如果是twentyeleven或者twentyten,修改content-page.php)
如果你设置成功,打开某篇文章的编辑页面,就会看到上图所示的自定义字段post_views_count,修改这个字段的值就可以修改文章浏览次数,因为使用不同的自定义字段,和wp postviews不冲突。
Warning: Cannot modify header information – headers already sent by (output started at /home/thisis/public_html/wp-content/themes/inove/functions.php:597) in /home/thisis/public_html/wp-admin/theme-editor.php on line 103
theme-editor.php 103 header(“Location: $location”);
functions.php:597 就是添加进的代码的那行
你用的inove主题啊,我试了下没问题啊,两个函数写在functions.php里,single.php里面写调用代码,一切正常啊
看报错信息的话,问题是出在functions.php里,你用的什么编辑器?wordpress自带的在线编辑器吗?最好用notepad++或者dreamwaver编辑。
ls的都是高手。
我弄的时候出问题了
把lz的代码复制进functions.php的文件最后,这部没出错
但single.php这里添加进代码,保存就出错说是header什么的已经在functions.php输出了?就是我添加进的那段代码位置。
求解?
不过,你这个代码太简洁了,很有效率,我很犹豫要不要采用你的方法。
如果把这段代码改成ajax存取数据,就可以用了,不会跟cache插件冲突,具体我还没弄过
按照你的精简法,如果文章静态化以后,会不会计数不正确? 最近我找到另一个统计插件 WP Most Popular,这个会另建一个数据表,同时是用JS脚本来工作的. http://wordpress.org/extend/plugins/wp-most-popular/
肯定不支静态化的,这个计数就依赖于每次刷新页面写数据库,生成静态页面就没法写数据库了,得改用ajax的方式,自己写可以,或者用WP-PostViews +Ajax_the_views。WP Most Popular我没用过,多谢推荐,一会试试看