wordpress CMS主题如何调用3个月内的热门文章排行榜

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

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

//访问计数:必须 启用 wp_head();
function record_visitors(){
if(is_singular()){
global $post;
$post_ID = $post->ID;
if($post_ID){
$post_views = (int)get_post_meta($post_ID, 'views', true);
if(!update_post_meta($post_ID, 'views', ($post_views+1))){
add_post_meta($post_ID, 'views', 1, true);
}
}
}
}
add_action('wp_head', 'record_visitors');

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

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

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

/// 函数作用:取得阅读最多的文章
//$time=1 时间1个月
function get_most_viewed_format($time=1,$limit=10, $mode = '', $term_id = 0) {
global $wpdb, $post;
$time = date("Y-m-d H:i:s",time()-$time*30*24*3600); //限制只显示最近3个月的文章
$output = '';
$mode = ($mode == '') ? 'post' : $mode;
$type_sql = ($mode != 'both') ? "AND post_type='$mode'" : '';
$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" : '');
$term_sql.= $term_id ? " AND $wpdb->term_taxonomy.taxonomy != 'link_category'" : '';
$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)" : '';

$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");
$aa = 1;
if($most_viewed) {
foreach ($most_viewed as $viewed) {
if($aa<10){ $aa = '0'.$aa; }
$post_ID = $viewed->ID;
$post_views = number_format($viewed->views);
$post_title = esc_attr($viewed->post_title);
$get_permalink = esc_attr(get_permalink($post_ID));
$output .= '
  • '.$aa.' '.$post_title.'
  • '; $aa++; } }else{ $output = "
  • N/A
  • \n"; } echo $output; } 上面的代码中,我为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主题添加了热门文章排行榜的功能,并且可以灵活发调用不同时间段内的热门文章排行榜,适合不同的需求。

     

    你可能感兴趣的:(WordPress)