摘要:网站后台统计的,是博客建立以来全部的浏览量、文章数和评论数,如何实现统计指定年度内的数据呢?我参照 懿古今 的方法,制作了一个文章模板,以后每年发布年度文章统计时,只需输入一个年份就能自动生成了。

元旦的钟声敲过,我们站长通常都会对上一年度博客的情况作个总结,如发布了几篇文章,有几条评论,浏览量多少,以及哪些文章阅读量最高,哪些文章评论最多等。既是更博过程的回顾,也可让读者对自己的博客有个全面的了解。

WordPress 网站后台统计的,是博客建立以来全部的浏览量、文章数和评论数,如何实现统计指定年度内的数据呢?我参照 懿古今 的方法,制作了一个文章模板,以后每年发布年度文章统计时,只需输入一个年份就能自动生成了。

文章模板的制作和使用方法如下:

1、建立文章模板文件。打开当前使用的主题文件夹,将 single.php 文件复制另存为 template-years.php 文件,其中 template-不可修改,years 可修改为其他便于记忆的名字。(文件命名很重要,不然后面找不到文章模板的。)

2、编写模板文件代码。

1)标记为模板。没这段代码,系统就不会识别它是模板文件。打开 template-years.php 文件,在文件第一行添加以下代码并保存:

<?php
/*
Template Name: 年度文章统计
Template Post Type: post
*/
?>

2)代码插入位置。打开 template-years.php 文件,找到以下代码,在该代码下方添加功能代码:

<?php the_content(); ?>

3)编写功能代码

  • 年度浏览最多的十篇文章
<?php if(get_post_meta($post->ID, 'years', true)){$ndtj = get_post_meta($post->ID, 'years', true);}else{$ndtj = date('Y')-1;}?>
<h2><strong><?php echo $ndtj;?>年度浏览最多的十篇文章</strong></h2>
<?php
query_posts( array( 'year' => $ndtj, 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'showposts' => '10', 'order' => 'DESC' ) );
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li><a href="<?php echo get_permalink();?>" target="_blank"><?php echo get_the_title();?>(<?php the_views();?>)</a></li>
<?php endwhile;wp_reset_postdata(); endif;?>

第 4 行代码中, ‘showposts’ => ’10’,10 就是显示多少篇文章,可根据实际情况修改。DESC 改为 ASC ,即为统计年度内阅读量最少的文章。

标题后的浏览量,直接借用了 WP-PostViews 插件的 the_views() 函数。这上基础数据统计插件,建议大家安装一下,后台文章列表中还可按浏览量排序。

  • 年度评论最多的十篇文章
<?php
$next_year = $ndtj + 1;
$result = $wpdb->get_results("SELECT comment_count,ID,post_title,post_date FROM $wpdb->posts WHERE post_date BETWEEN '$ndtj-01-01' AND '$next_year-01-01' ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"><?php echo $title ?></a> (<?php echo $commentcount ?>)</li>
<?php } } ?>

此代码参考了 代码狗 的方法,其中的数字 10 和 DESC 排序也可以如上修改。

  • 年度发布文章总数量
<?php
if(!function_exists("get_num_posts_by_year")) {
function get_num_posts_by_year( $year ) {
global $wpdb;
$next_year = $year + 1;			
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->posts WHERE post_date >= %s AND post_date < %s AND post_type = %s AND post_status = %s",
"$year-01-01",
"$next_year-01-01",
"post",
"publish"
)
);
}
}						
?>

这是统计一个年度内发布的文章总数的,用的是 沙唐桔 的办法,在需要显示的地方键入如下代码:

<?php echo $ndtj;?>年发布 <?php echo get_num_posts_by_year ( $ndtj );?> 篇
  • 年度收到评论总数量
<?php								
if(!function_exists("get_num_comments_by_year")) {
function get_num_comments_by_year( $year ) {
global $wpdb;
$next_year = $year + 1;								
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->comments WHERE comment_date BETWEEN '$year-01-01' AND '$next_year-01-01' AND comment_approved = '1' AND comment_type = 'comment'",
)
);
}
}						
?>

在需要显示的地方键入如下代码:

<?php echo $ndtj;?>年收到 <?php echo get_num_comments_by_year( $ndtj );?> 条
  • 全站浏览总数量
<?php if(function_exists('the_views')) { get_totalviews();}?>

我是直接用了WP-PostViews 插件的 get_totalviews() 函数,方便的很。

  • 网站统计及运行状态信息
日志总数:<?php $count_posts = wp_count_posts(); echo $published_posts = $count_posts->publish;?>篇
评论总数:<?php echo $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments");?>条
分类总数:<?php echo $count_categories = wp_count_terms('category'); ?>个
标签总数:<?php echo $count_tags = wp_count_terms('post_tag'); ?>个
友情链接:<?php $link = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links WHERE link_visible = 'Y'"); echo $link; ?>个
网站运行:<?php echo floor((time()-strtotime("2011-7-27"))/86400); ?>天
最后更新:<?php $last = $wpdb->get_results("SELECT MAX(post_modified) AS MAX_m FROM $wpdb->posts WHERE (post_type = 'post' OR post_type = 'page') AND (post_status = 'publish' OR post_status = 'private')");$last = date('Y年n月j日', strtotime($last[0]->MAX_m));echo $last; ?>

这个内容,许多站长会制作成小工具摆在侧边栏中,我们把它放在年度文章统计中,也算是网站全面信息展示吧。

3、文章模板使用方法

1)撰写文章内容。WordPress 后台正常发布一篇年度总结文章,文章标题和内容正常填写。

2)创建自定义字段。在“自定义字段”中点击“输入新栏目”,添加一个名称为:years,值为想要统计的年度,如 2020,并点击【添加自定义字段】按钮,完成赋值。

3)选用文章模板。在“文章属性”中选择“年度文章统计”模板,模板名称就是第 2 步所填写的名称。

4)发布文章。完成以上步骤,就可以正常发布文章了。我们即可在该篇文章正文内容下方看到定制的统计信息。看我网站的效果:2020 年度浏览/评论最多的十篇文章

如果没有看到“自定义字段”或“文章属性”,请点击右上角的“显示选项”勾选“自定义字段”或“文章属性”即可。古腾堡编辑器则在“偏好设置”中勾选。

如果你不想自己多费精力去折腾代码,站长就把个模板文件分享给大家,你建立自己的模板文件后,直接复制功能代码到相应位置即可。

这个模板还不够完美,缺少了年度浏览总数量,虽然可以通过百度统计一类的统计工具获得,但我还是想通过网站数据库读取出来,但尝试了几段代码都没成功,坐等攻城狮们能给支个招。

历史上的今天: