也想出現在這里?聯系我們

WordPress非插件添加文章瀏覽次數統計功能

  • 文章介紹
  • 升級版本
  • 評價&建議

WordPress文章瀏覽次數統計功能是必不可少的,不少主題已經集成該功能,如果你的主題沒有集成,你可以使用 WP-Postviews 插件,或者試試本文的代碼。

WordPress非插件實現文章瀏覽次數統計的方法,是DH參考willin kan大師的my_visitor插件來寫的,刷新一次文章頁面就統計一次,比較簡單實用。

非插件統計文章瀏覽次數

1.在主題的 functions.php文件的最后一個 ?> 前面添加下面的代碼:

  1. /*?訪問計數?*/
  2. function?record_visitors()
  3. {
  4. ????if?(is_singular())
  5. ????{
  6. ??????global?$post;
  7. ??????$post_ID?=?$post->ID;
  8. ??????if($post_ID)
  9. ??????{
  10. ??????????$post_views?=?(int)get_post_meta($post_ID,?'views',?true);
  11. ??????????if(!update_post_meta($post_ID,?'views',?($post_views+1)))
  12. ??????????{
  13. ????????????add_post_meta($post_ID,?'views',?1,?true);
  14. ??????????}
  15. ??????}
  16. ????}
  17. }
  18. add_action('wp_head',?'record_visitors');
  19. ///?函數名稱:post_views
  20. ///?函數作用:取得文章的閱讀次數
  21. function?post_views($before?=?'(點擊?',?$after?=?'?次)',?$echo?=?1)
  22. {
  23. ??global?$post;
  24. ??$post_ID?=?$post->ID;
  25. ??$views?=?(int)get_post_meta($post_ID,?'views',?true);
  26. ??if?($echo)?echo?$before,?number_format($views),?$after;
  27. ??else?return?$views;
  28. }

2.在需要顯示該統計次數的地方使用下面的代碼調用:

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

獲取瀏覽次數最多的文章

如果要獲取上面的函數統計出來的瀏覽次數最多的文章,可以在 functions.php文件的最后一個 ?> 前面添加下面的代碼:

  1. ///?get_most_viewed_format
  2. ///?函數作用:取得閱讀最多的文章
  3. function?get_most_viewed_format($mode?=?'',?$limit?=?10,?$show_date?=?0,?$term_id?=?0,?$beforetitle=?'(',?$aftertitle?=?')',?$beforedate=?'(',?$afterdate?=?')',?$beforecount=?'(',?$aftercount?=?')')?{
  4. ??global?$wpdb,?$post;
  5. ??$output?=?'';
  6. ??$mode?=?($mode?==?'')???'post'?:?$mode;
  7. ??$type_sql?=?($mode?!=?'both')???"AND?post_type='$mode'"?:?'';
  8. ??$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"?:?'');
  9. ??$term_sql.=?$term_id???"?AND?$wpdb->term_taxonomy.taxonomy?!=?'link_category'"?:?'';
  10. ??$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)"?:?'';
  11. ??//?database?query
  12. ??$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");
  13. ??if?($most_viewed)?{
  14. ???foreach?($most_viewed?as?$viewed)?{
  15. ????$post_ID????=?$viewed->ID;
  16. ????$post_views?=?number_format($viewed->views);
  17. ????$post_title?=?esc_attr($viewed->post_title);
  18. ????$get_permalink?=?esc_attr(get_permalink($post_ID));
  19. ????$output?.=?"<li>$beforetitle$post_title$aftertitle";
  20. ????if?($show_date)?{
  21. ??????$posted?=?date(get_option('date_format'),?strtotime($viewed->post_date));
  22. ??????$output?.=?"$beforedate?$posted?$afterdate";
  23. ????}
  24. ????$output?.=?"$beforecount?$post_views?$aftercount</li>";
  25. ???}
  26. ??}?else?{
  27. ???$output?=?"<li>N/A</li>n";
  28. ??}
  29. ??echo?$output;
  30. }

然后使用下面的函數調用:

  1. <?php?get_most_viewed_format();??>
有用10
  • 2015.08.27初次和大家見面了!

已擁有1人對該主題的建議

  1. 這個好,學習了,正是要找的。

    2015-12-13 下午 12:57 [回復]

發表評論

還能輸入240個字

Hi, 歡迎加入Wordpress技術交流群,帶你裝逼帶你飛!

我要入群
也想出現在這里?聯系我們
wordpress加速

我來推薦一個更牛逼的給你看看?

  • 猛戳我吧
夫妇野外交换HD高清版,免费A片在线观看,亚洲精品国产自在现线,中国老妇人60OLDMANTV