按月份调用阅读数最多的文章

发表于: 2022年9月18日 48

第一步:为wordpress主题的文章添加记录浏览量功能

如何记录wordpress文章的用户浏览量,这个在我们发表的前面的文章中就已经介绍过了。这里,再把它贴出来:

  1. //访问计数:必须 启用 wp_head();
  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');

注意:这段代码功能模块是添加到wp_head勾子里的,所以,我们要在wordpress主题怕header.php文件的标签内容调用wp_head()函数。否则,功能失效。

第二步:为wordpress主题添加文章排行榜功能函数。

给wordpress添加热门文章排行榜功能,这个在网上有非常多的介绍。不过,大多都是介绍如何通过wp-postview插件来实现排行榜功能。这不是本文所要介绍的。本文要介绍的是通过纯代码来实现这种功能。代码如下:

  1. /// 函数作用:取得阅读最多的文章
  2. //$time=1 时间1个月
  3. function get_most_viewed_format($time=1,$limit=10, $mode = '', $term_id = 0) {
  4.     global $wpdb, $post;
  5.     $time = date("Y-m-d H:i:s",time()-$time*30*24*3600); //限制只显示最近3个月的文章
  6.     $output = '';
  7.     $mode = ($mode == '') ? 'post' : $mode;
  8.     $type_sql = ($mode != 'both') ? "AND post_type='$mode'" : '';
  9.     $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" : '');
  10.     $term_sql.= $term_id ? " AND $wpdb->term_taxonomy.taxonomy != 'link_category'" : '';
  11.     $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)" : '';
  12.  
  13.     $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 post_date>'$time' AND meta_key = 'views' GROUP BY ID ORDER BY views DESC LIMIT $limit");
  14.     $aa = 1;
  15.     if($most_viewed) {
  16.     foreach ($most_viewed as $viewed) {
  17.     if($aa<10){ $aa = '0'.$aa; }
  18.     $post_ID = $viewed->ID;
  19.     $post_views = number_format($viewed->views);
  20.     $post_title = esc_attr($viewed->post_title);
  21.     $get_permalink = esc_attr(get_permalink($post_ID));
  22.     $output .= '<li class="list-group-item"><a href='.$get_permalink.' class="title" title='.$post_title.'><b class="rounded-lg">'.$aa.'</b>'.$post_title.'</a></li>';
  23.     $aa++;
  24.     }
  25.     }else{
  26.     $output = "<li>暂无内容</li>\n";
  27.     }
  28.     echo $output;
  29.     }

上面的代码中,我为get_most_viewed_format()函数设置了1个时间限制参数和1个文章数量限制参数。这样,我们就可以调用一定时间内的固定数量的热门文章。把上面这段代码也在放到wordpress主题的functions.php文件中。

第三步:在前台调用排行榜。

上面2步,我们为wordpress主题实现了排行榜功能。这样,我们就可以在wordpress主题的前台页面调用这个get_most_viewed_format()函数来展示热门文章排行榜。示例如下:

调用1年内的热门文章排行榜,文章数量20篇:

get_most_viewed_format(12, 20);

调用1个季度的热门文章排行榜,10篇:

get_most_viewed_format(3, 10);

通过上面的3步,我们就为我们的wordpress CMS主题添加了热门文章排行榜的功能,并且可以灵活发调用不同时间段内的热门文章排行榜,适合不同的需求。

话题:
No Tag

相关推荐