如何统计点赞数据
由于点赞插件WP-Zan用的是详细数据模式,也就是说,点赞一次,就会往数据表里面插入一次,那么你要获得某篇文章的点赞数据,必须对它进行统计。
统计所有文章的点赞数
SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` GROUP BY POST_ID
统计某篇文章的点赞数,我这里用的是第一篇文章
SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` where post_id =1
与wordpress文章关联
下面的语句实现了与wordpress文章表的关联,使用的是LEFT JOIN,对文章类型为post、文章状态为publish、在1800天以内的文章按照点赞数从多到少的排序,输出结果为5条记录。
SELECT a.ID,a.post_title,a.post_name,b.cnt FROM `wp_posts` AS A LEFT JOIN (SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` GROUP BY POST_ID) AS B on a.ID= B.post_id WHERE 1 and a.post_type = 'post' and a.post_status ='publish' and TO_DAYS(NOW()) - TO_DAYS(a.post_date) <= 1800 order by a.post_date DESC limit 0,5
完整的php代码
下面没有变化的sql和代码,直接使用的是上面的sql。先声明全局表里$wpdb,然后定义查询字符串,然后执行结果。
global $wpdb; $querystr = "SELECT a.ID,a.post_title,a.post_name,b.cnt FROM `wp_posts` AS A LEFT JOIN (SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` GROUP BY POST_ID) AS B on a.ID= B.post_id WHERE 1 and a.post_type = 'post' and a.post_status ='publish' and TO_DAYS(NOW()) - TO_DAYS(a.post_date) <= 1800 order by a.post_date DESC limit 0,5"; $results = $wpdb->get_results($wpdb->prepare($querystr,0),ARRAY_A);
如何变化
我们一般是对统计时间段和输出的条数来进行变化。
首先对查询字符串进行变化,将常量1800和5改为变量。
$querystr = "SELECT a.ID,a.post_title,a.post_name,b.cnt FROM `wp_posts` AS A LEFT JOIN (SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` GROUP BY POST_ID) AS B on a.ID= B.post_id WHERE 1 and a.post_type = 'post' and a.post_status ='publish' and TO_DAYS(NOW()) - TO_DAYS(a.post_date) <= '%d' order by a.post_date DESC limit 0,'%d'";
然后对输出结果的执行语句做以下修改,那么这条语句的意思是:搜索7天之内的五条记录。
$results = $wpdb->get_results($wpdb->prepare($querystr,7,5),ARRAY_A);
这条语句的意思是:搜索30天之内的五条记录。
$results = $wpdb->get_results($wpdb->prepare($querystr,30,5),ARRAY_A);
如果要从全部的记录中查询,那么就用下面的SQL。
$querystr = "SELECT a.ID,a.post_title,a.post_name,b.cnt FROM `wp_posts` AS A LEFT JOIN (SELECT POST_ID,COUNT(1) AS CNT FROM `wp_zan` GROUP BY POST_ID) AS B on a.ID= B.post_id WHERE 1 and a.post_type = 'post' and a.post_status ='publish' order by a.post_date DESC limit 0,'%d'"; $results = $wpdb->get_results($wpdb->prepare($querystr,5),ARRAY_A);
注意,这里使用的是数据库安全查询,所以是这样的形式,你也可以直接在get_results()使用查询字符串。
查询结果会有三种形式:关联数组,ARRAY_A; 数值数组,ARRAY_N; 默认值,OBJECT。这里使用了关联数组,ARRAY_A。
如何使用结果
$results[ID] 这个是文章ID 如果你使用的是ID形式的网址,就用这个来拼接出真实的网址。
$results[post_title] 这个是文章标题。
$results[post_name] 这个是文章的名字,如果你使用的是英文形式的网址,就用这个来拼接出真实的网址。
$results[cnt] 这个点赞的次数。
结束
好了,把语句放入你需要的地方就可以使用了。其实对这个插件而言,用wp_postmeta记录点赞数据就可以了。你学会了吗?没有学会的话,请在下面留言,大家一起讨论。如果,你希望下载这个插件可以在wordpress官方搜索“WordPress 文章点赞”,或者前往https://wordpress.org/plugins/wp-zan/。