wordpress中不使用插件添加文章浏览数及评论数的方法。

来源:互联网 发布:java缓存技术 redis 编辑:程序博客网 时间:2024/05/17 04:06

wordpress有丰富的模板选择,对于建站,建博客都非常方便,但大多数情况模板都不能满足全部的需求,会缺少一些功能。比如下方本人的博客使用的prowerV5模板http://xgezhang.com,简洁大方,但功能上有所欠缺,于是就先尝试加上文章浏览及评论数显示。本来是可以用插件搞定的,但考虑到wordpress本身就冗杂,插件还是尽可能少比较好,于是就借助网上资料,自己写了几个函数来实现。

1、文章评论数

由于对wordpress结构不太了解,一开始有点无从下手。用phpmyadmin浏览数据库之后才发现wp-posts表里本来就有comment_count这一项,于是就非常简单的直接SQL语句解决了。

打开主题文件夹中function.php文件,在合适的地方插入下面一段代码。

function comment_views()
{
global $wpdb;
global $post;
$post_ID = $post->ID;
$numcomms = $wpdb->get_var(“SELECT comment_count FROM $wpdb->posts WHERE ID =$post_ID”);
return $numcomms;
}

只是要注意:

1.wordpress的对数据库及文章的访问操作得使用全局变量$wpdb,$post;

2.get_var为wp自带的获取select返回值的函数,本身后面应该还有两个整形参数的,表示所预计查询出来的结果中的行和列,缺省为0,0,这里查询值唯一,所以没有写。

最后只需要的地方调用该函数就能返回数值了。

2、文章浏览数

浏览数就没那么直接了,现有的数据库没有对点击或刷新操作的计数值,所以只能自己写。

先介绍几个函数:
add_post_meta($post_id, $meta_key, $meta_value,$unique);

这是WordPress 中用来给文章或页面添加自定义字段值的一个函数,其用法与在编写文章时在文章编写界面中利用自定义栏目面板为文章添加自定义字段值的效果是一样的,常见的使用有:文章浏览次数、喜欢按钮、seo插件等。其中 $meta_key为自定义字段的名称; $meta_value为自定义字段的值;$unique为bool型变量,表示如果有重复是否覆盖(true)。

 

get_post_meta($post_id, $key, $single);

和add_post_meta类似,功能是获取指定字段的值,$single为bool型变量,表示是否返回字符串。

 

update_post_meta($post_id, $key, $value);

字面意思,表示获取指定字段的值。

 

因此,我们可以先对指定文章进行postmeta的提取,如果为空,则新建一个名为”views”的postmeta,将值赋为1,如果不为空,则对其进行值的变更(views加1),代码中是否为空直接用update_post_meta的返回值判断。最后将整个函数通过add_action函数加到wp_head()中,确保每次加载页面都会执行(点击文章或者刷新都增加计数)

function record_visitors()
{
if (is_singular())
{
global $post;
$post_ID = $post->ID;
$post_views = (int)get_post_meta($post_ID, ‘views’, true);
if(!update_post_meta($post_ID, ‘views’, ($post_views+1)))
{
add_post_meta($post_ID, ‘views’, 1, true);
}
}
}

add_action(‘wp_head’, ‘record_visitors’);

再写一个调用的函数:

function post_views()
{
global $post;
$post_ID = $post->ID;
$views = (int)get_post_meta($post_ID, ‘views’, true);
return $views;
}

最后在需要的地方调用post_views()函数即可。

0 0