!
也想出现在这里? 联系我们
广告位

WordPress不用插件实现文章阅读计数及热门文章

作为WordPress使用者,能不使用插件就尽量不安装插件,作为WordPress主题制作者,就更不应该让主题依赖插件了。文章阅读计数和热门文章列表是常见的需求,实现起来其实也并不复杂。

设置文章阅读数量函数:

  1. function bzg_set_post_views() {
  2. global $post;
  3. if( ! isset( $post->ID ) || ! is_singular() ) return;
  4. $cookie_name = 'views_' . $post->ID;
  5. if( isset( $_COOKIE[$cookie_name] ) ) return;
  6. $post_views = (int) get_post_meta( $post->ID, 'views', true );
  7. if( empty( $post_views ) ) {
  8. $post_views = 1;
  9. } else {
  10. $post_views = $post_views + 1;
  11. }
  12. update_post_meta( $post->ID, 'views', $post_views );
  13. setcookie( $cookie_name, 'yes', ( current_time( 'timestamp' ) + 86400 ) );
  14. }
  15. add_action( 'get_header', 'bzg_set_post_views' );

代码中86400是指同一浏览器访问24小时内不计数,这样就能一定程度上避免刷阅读数

读取文章阅读数量函数:

  1. function bzg_post_views($post_ID = '') {
  2. global $post;
  3. $post_id = $post_ID;
  4. if( ! $post_id ) $post_id = $post->ID;
  5. if( ! $post_id ) return;
  6. $post_views = (int) get_post_meta( $post_id, 'views', true );
  7. if( empty( $post_views ) ) $post_views = 0;
  8. return $post_views;
  9. }

以上代码放到主题文件functions.php中,在需要显示文章阅读数的地方调用:

  1. <?php echo bzg_post_views(); ?>

获取阅读数最多的文章:

  1. function bzg_get_most_viewed( $limit = 10 ) {
  2. $args = array(
  3. 'posts_per_page' => $limit,
  4. 'order' => 'DESC',
  5. 'post_status' => 'publish',
  6. 'orderby' => 'meta_value_num',
  7. 'meta_key' => 'views',
  8. 'date_query' => array(
  9. array(
  10. 'after' => '-360day',
  11. )
  12. ),
  13. );
  14. $str = implode('&', $args);
  15. $postlist = wp_cache_get('hot_post_' . md5($str), 'beizigen');
  16. if(false === $postlist) {
  17. $postlist = get_posts( $args );
  18. wp_cache_set('hot_post_' . md5($str), $postlist, 'beizigen', 86400);
  19. }
  20. foreach ( $postlist as $post ) {
  21. echo '&lt;li><a href="' . get_permalink($post->ID) . '" rel="bookmark">' . $post->post_title . '</a></li>';
  22. }
  23. wp_reset_postdata();
  24. }

注意函数中的-360day,是指输出360天内的文章,函数调用方法:

  1. &lt;ul&gt;
  2. <?php bzg_get_most_viewed(8); ?>
  3. </ul>
WordPress教程

WordPress获取Tag标题标签:single_tag_title

2021-4-13 23:29:39

WordPress教程

WordPress获取Tag摘要标签:tag_description

2021-4-14 11:29:12

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索