同乐儿

  1. 首页
  2. wordpress优化
wordpress非插件添加文章浏览次数统计功能并获取最热文章
发布 | 2年前 (2017-09-02) | 阅读数:830 | 评论数:0 | 来源:同乐儿

引言:此文由子域名转移而来,因为细微强迫症和放弃子域名而不舍得完全丢弃,所以将会逐步第二次转移文章到主域名上来,二者主题(阿里白秀和D8)均来自大前端,追求完美的同时有一丝小懒,主题就不换了,D8主题用起来挺好。

在wordpress主题中有不少都用到了wp-postviews插件,它可以统计文章的浏览次数,但对于一些站长不喜欢用太多的插件,能不用就不用,这也是为了加速wordpress程序,所以有必要分享wordpress非插件添加文章浏览次数统计功能。

另外,如果想下载wp-postviews插件可以直接在wordpress后台安装插件处搜索wp-postviews,即可安装成功。

(点击这里查看原文)

非插件统计文章浏览次数——方法一

1、将以下代码插入function.php中。

  1. /* 访问计数 */
  2. function record_visitors(){
  3.     if (is_singular()){
  4.         global $post;
  5.         $post_ID = $post->ID;
  6.         if($post_ID){
  7.             $post_views = (int)get_post_meta($post_ID, 'views', true);
  8.             if(!update_post_meta($post_ID, 'views', ($post_views+1))){
  9.                 add_post_meta($post_ID, 'views', 1, true);
  10.             }
  11.         }
  12.     }
  13. }
  14. add_action('wp_head', 'record_visitors');
  15. //函数名称:post_views
  16. //函数作用:取得文章的阅读次数
  17. function post_views($before = '(点击 ', $after = ' 次)', $echo = 1){
  18.     global $post;
  19.     $post_ID = $post->ID;
  20.     $views = (int)get_post_meta($post_ID, 'views', true);
  21.     if ($echoecho $before, number_format($views), $after;
  22.     else return $views;
  23. }

2、在需要添加浏览次数的地方添加如下代码即可。

  1. <?php post_views(' ', ' 次'); ?>

非插件统计文章浏览次数——方法二

 

1、同样,将如下代码插入到function.php中。

  1. /* Postviews start */
  2. function getPostViews($postID){
  3.     $count_key = 'post_views_count';
  4.     $count = get_post_meta($postID$count_key, true);
  5.     if($count==){
  6.         delete_post_meta($postID$count_key);
  7.         add_post_meta($postID$count_key, '0');
  8.         return " 0 ";
  9.     }
  10.     return $count;
  11. }
  12. function setPostViews($postID) {
  13.     $count_key = 'post_views_count';
  14.     $count = get_post_meta($postID$count_key, true);
  15.     if($count==){
  16.         $count = 0;
  17.         delete_post_meta($postID$count_key);
  18.         add_post_meta($postID$count_key, '0');
  19.     }else{
  20.         $count++;
  21.         update_post_meta($postID$count_key$count);
  22.     }
  23. }
  24. /* Postviews start end*/

2、功能代码添加好后,我们开始进行统计,在single.php中的 endwhile; endif;  循环前添加如下代码:

  1. <?php setPostViews(get_the_ID());?>

3、最后就可以在需要统计次数的地方添加如下代码了。

  1. <?php echo getPostViews(get_the_ID()); ?> 次浏览

获取浏览次数最多的文章

 

1、将以下代码插入到function.php中。

  1. //get_most_viewed_format函数作用:取得阅读最多的文章
  2. function get_most_viewed_format($mode = $limit = 10, $show_date = 0, $term_id = 0, $beforetitle= '(', $aftertitle = ')', $beforedate= '(', $afterdate = ')', $beforecount= '(', $aftercount = ')') {
  3.     global $wpdb$post;
  4.     $output = ;
  5.     $mode = ($mode == ) ? 'post' : $mode;
  6.     $type_sql = ($mode != 'both') ? "AND post_type='$mode'" : ;
  7.     $term_sql = (is_array($term_id)) ? "AND $wpdb->term_taxonomy.term_id IN (" . join(',', $term_id) . ')' : ($term_id != 0 ? "AND $wpdb->term_taxonomy.term_id = $term_id" : );
  8.     $term_sql.= $term_id ? " AND $wpdb->term_taxonomy.taxonomy != 'link_category'" : ;
  9.     $inr_join = $term_id ? "INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)" : ;
  10.     // database query
  11.     $most_viewed = $wpdb->get_results("SELECT ID, post_date, post_title, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) $inr_join WHERE post_status = 'publish' AND post_password = ” $term_sql $type_sql AND meta_key = 'views' GROUP BY ID ORDER BY views DESC LIMIT $limit");
  12.     if ($most_viewed) {
  13.         foreach ($most_viewed as $viewed) {
  14.             $post_ID    = $viewed->ID;
  15.             $post_views = number_format($viewed->views);
  16.             $post_title = esc_attr($viewed->post_title);
  17.             $get_permalink = esc_attr(get_permalink($post_ID));
  18.             $output .= "<li>$beforetitle$post_title$aftertitle";
  19.             if ($show_date) {
  20.                 $posted = date(get_option('date_format'), strtotime($viewed->post_date));
  21.                 $output .= "$beforedate $posted $afterdate";
  22.             }
  23.             $output .= "$beforecount $post_views $aftercount</li>";
  24.         }
  25.     } else {
  26.         $output = "<li>N/A</li>n";
  27.     }
  28.     echo $output;
  29. }

2、在需要显示浏览次数最多的文章列表的地方插入如下代码即可。

  1. <?php get_most_viewed_format(); ?>


如果觉得该作者的文章对你有帮助,请随意打赏给他。您的支持将鼓励作者继续创作!
打赏
X
打赏本文作者方式

微信扫一扫可留言


继续浏览有关 wordpress,wordpress优化 的文章

分享至:


发表我的评论
取消评论

表情
  • 121 评论
  • 197 粉丝
  • 139 文章
  • 最新文章
    diamond于2019-04-26 22:17:16发表:WeMediaForEmlog付费阅读自媒体插件(支持payjs微信支付)插件截图:插件介绍:本插件可以隐藏文章...
    diamond于2019-04-23 00:22:41发表:TleBarragerForTypecho评论弹幕插件插件介绍:为Typecho增加评论弹幕功能使用方法:第一...
    diamond于2019-04-02 00:26:53发表:原创:WeMediaForWordPress付费阅读插件(支持免登录SPay+payjs微信支付)插件介绍:本插件可以隐藏文章中的任意部分内容,当访客付费后,可...
    diamond于2019-03-10 14:16:16发表:仿站:miaopaiForEmlog秒拍主题模板# 模板截图- 用户登陆截图- 首页截图- 文章页截图...
    diamond于2019-02-26 15:53:01发表:仿站:inkerForTypecho映客主题模板# 模板截图- 电脑版 综合截图- 电脑版 文章截图(此截图只...

    • 同乐儿
    • 北京 朝阳区
    • 2018年8月1日
    • 欢迎前往这里http://mb.yjz.top/web/sites/template挑选精美网站后联系微信Diamond0419购买~
    • 查看更多 >
    随机热门
    标签
    wordpress (82) 原创 (29) wordpress优化 (26) wordpress主题 (24) wordpress插件 (22) Typecho (19) wordpress教程 (18) wordpress seo (17) Typecho插件 (15) 博客主题 (8) emlog (8) emlog插件 (7) wordpress维护 (6) CMS主题 (5) 企业主题 (4) DNSPod for emlog (3) 淘宝客主题 (3) 修订版本 (3) 自动保存 (3) 移动适配 (3)
    阿里图床

    阿里图床