WordPress
侧边栏“博客统计”
小工具的制作方法。首先要下载cztcms.zip
文件,解压得到一个PHP
文件。蓝奏云地址:
▶ cztcms.zip
1、将这个PHP
文件放到主题目录下。打开主题目录下的 function.php
,在最后一个 ?> 前插入以下代码:
include("cztcms.php");
到“后台——外观——小工具”中添加“博客统计”小工具即可。默认是这样的:

2、由于原来的样式太丑了,我经过优化以后是这样的。我只用了其中的文章数和阅读数。其他的按照我的代码样式自己添加即可。

优化后的代码,将以下代码替换cztcms.php
里面的代码即可。或者也可以自己新建一个cztcms.php
文件,然后复制进去。以下代码是我的改造结果。你也可以自己去创造。
<?php
// 定义小工具的类 EfanBlogStat
class EfanBlogStat extends WP_Widget{
function EfanBlogStat(){
// 定义小工具的构造函数
$widget_ops = array('classname' => 'widget_blogstat', 'description' => '显示博客的统计信息');
$this->WP_Widget(false, '博客统计', $widget_ops);
}
function form($instance){
// 表单函数,控制后台显示
// $instance 为之前保存过的数据
// 如果之前没有数据的话,设置默认量
$instance = wp_parse_args(
(array)$instance,
array(
'title' => '博客统计',
'establish_time' => '2020-02-02'
)
);
$title = htmlspecialchars($instance['title']);
$establish_time = htmlspecialchars($instance['establish_time']);
// 表格布局输出表单
$output = '<table>';
$output .= '<tr><td>标题</td><td>';
$output .= '<input id="'.$this->get_field_id('title') .'" name="'.$this->get_field_name('title').'" type="text" value="'.$instance['title'].'" />';
$output .= '</td></tr><tr><td>建站日期:</td><td>';
$output .= '<input id="'.$this->get_field_id('establish_time') .'" name="'.$this->get_field_name('establish_time').'" type="text" value="'.$instance['establish_time'].'" />';
$output .= '</td></tr></table>';
$output .= '<br />输入数字1~11安排显示顺序,0表示不显示';
$output .= '<table>';
$output .= '<tr><td>日志总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('post_count_no') .'" name="'.$this->get_field_name('post_count_no').'" type="text" value="'.$instance['post_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>草稿数目:</td><td>';
$output .= '<input id="'.$this->get_field_id('draft_count_no') .'" name="'.$this->get_field_name('draft_count_no').'" type="text" value="'.$instance['draft_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>评论数目:</td><td>';
$output .= '<input id="'.$this->get_field_id('comment_count_no') .'" name="'.$this->get_field_name('comment_count_no').'" type="text" value="'.$instance['comment_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>建站日期:</td><td>';
$output .= '<input id="'.$this->get_field_id('establish_date_no') .'" name="'.$this->get_field_name('establish_date_no').'" type="text" value="'.$instance['establish_date_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>运行天数:</td><td>';
$output .= '<input id="'.$this->get_field_id('establish_time_no') .'" name="'.$this->get_field_name('establish_time_no').'" type="text" value="'.$instance['establish_time_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>标签总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('tag_count_no') .'" name="'.$this->get_field_name('tag_count_no').'" type="text" value="'.$instance['tag_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>页面总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('page_count_no') .'" name="'.$this->get_field_name('page_count_no').'" type="text" value="'.$instance['page_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>分类总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('cat_count_no') .'" name="'.$this->get_field_name('cat_count_no').'" type="text" value="'.$instance['cat_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>友链总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('link_count_no') .'" name="'.$this->get_field_name('link_count_no').'" type="text" value="'.$instance['link_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>用户总数:</td><td>';
$output .= '<input id="'.$this->get_field_id('user_count_no') .'" name="'.$this->get_field_name('user_count_no').'" type="text" value="'.$instance['user_count_no'].'" />';
$output .= '</td></tr>';
$output .= '<tr><td>最后更新:</td><td>';
$output .= '<input id="'.$this->get_field_id('last_update_no') .'" name="'.$this->get_field_name('last_update_no').'" type="text" value="'.$instance['last_update_no'].'" />';
$output .= '</td></tr>';
$output .= '</table>';
$output .= '<label><input id="'.$this->get_field_id('support_me') .'" name="'.$this->get_field_name('support_me').'" type="checkbox" ';
if ($instance['support_me']) {
$output .= 'checked="checked"';
}
$output .= ' /> 支持开发者</label>';
echo $output;
}
function update($new_instance, $old_instance){
// 更新数据的函数
$instance = $old_instance;
// 数据处理
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['establish_time'] = strip_tags(stripslashes($new_instance['establish_time']));
return $instance;
}
function widget($args, $instance){
extract($args); //展开数组
$title = apply_filters('widget_title',empty($instance['title']) ? ' ' : $instance['title']);
$establish_time = empty($instance['establish_time']) ? '2020-02-02' : $instance['establish_time'];
echo $before_widget;
echo $before_title . $title . $after_title;
echo '<ul>';
// $this->efan_get_blogstat($establish_time, $instance);
$this->efan_get_blogstat($establish_time);
echo '</ul>';
echo $after_widget;
}
function efan_get_blogstat($establish_time /*, $instance */){
// 相关数据的获取
global $wpdb;
$count_posts = wp_count_posts();
$published_posts = $count_posts->publish;
$draft_posts = $count_posts->draft;
$comments_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments");
$time = floor((time()-strtotime($establish_time))/86400);
$count_tags = wp_count_terms('post_tag');
$count_pages = wp_count_posts('page');
$page_posts = $count_pages->publish;
$count_categories = wp_count_terms('category');
$link = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links WHERE link_visible = 'Y'");
$users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");
$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));
$total_views = $wpdb->get_var("SELECT SUM(meta_value+0) FROM $wpdb->postmeta WHERE meta_key = 'views'");
$counter = intval(file_get_contents("counter.dat"));
if(!$_SESSION['#'])
{
$_SESSION['#'] = true;
$counter++;
$fp = fopen("counter.dat","w");
fwrite($fp, $counter);
fclose($fp);
}
$output ='<table>';
$output .= '<tr style="text-align:center;font-size:18px; font-family:黑体" >';
$output .= '<td style="width:150px;">文章总数</td>';
$output .= '<td style="width:150px;">访问总数</td>';
$output .= '<td style="width:150px;">阅读总数</td>';
$output .='</tr>';
$output .='<br>';
$output .='<tr style="text-align:center;font-size:16px; font-family:Consolas;">';
$output .='<td style="width:150px;">';
$output .='<a style="color:DodgerBlue;">';
$output .= $published_posts;
$output .='</a>';
$output .=' 篇';
$output .='</td>';
$output .='<td style="width:150px;">';
$output .='<a style="color:DodgerBlue;">';
$output .= $counter;
$output .='</a>';
$output .=' 次';
$output .='</td>';
$output .='<td style="width:150px;">';
$output .='<a style="color:DodgerBlue;">';
$output .= $total_views;
$output .='</a>';
$output .=' 次';
$output .='</td>';
$output .='</tr>';
$output .= '</table>';
$output .= '<hr>';
$output .='<p style="text-align:center;font-size:24px; font-family:Consolas;">';
$output .='<a style="color:red;">♥ </a>';
$output .='<a style="color:DodgerBlue;">2020-0202</a>';
$output .='<a style="color:red;"> ♥</a>';
$output .='</p>';
if (is_user_logged_in()){
}
if (get_option("users_can_register") == 1){
}
echo $output;
}
}
function EfanBlogStat(){
// 注册小工具
register_widget('EfanBlogStat');
}
add_action('widgets_init','EfanBlogStat');
?>
3、中间的访问总数是自己写的代码,其实就是PHP统计网站访问次数
的一个方法(刷新一次加一
),上面的改造已经将这个功能融合,也可以单独使用。以下代码添加到需要显示的地方即可。会自动在站点根目录下新建一个www.dat
文件,用来存放访问次数
。具体代码如下。
<?php
@session_start();
$counter = intval(file_get_contents("www.dat"));
if(!$_SESSION['#'])
{
$_SESSION['#'] = true;
$counter++;
$fp = fopen("www.dat","w");
fwrite($fp, $counter);
fclose($fp);
}
?>
<p align="center">您是到访的第<?php echo "$counter";?>位用户</p>
4.再分享一段代码,可以显示网站运行天数
,实时更新
,精确到秒
。
代码:在需要显示的地方加入即可:
博客稳定运行
<SPAN id=span_dt_dt style="color: #0196e3;"></SPAN>
<SCRIPT language=javascript>
function show_date_time(){
window.setTimeout("show_date_time()", 1000);
BirthDay=new Date("02/02/2020 00:00:00");//这个日期是建站日期
today=new Date();
timeold=(today.getTime()-BirthDay.getTime());
sectimeold=timeold/1000
secondsold=Math.floor(sectimeold);
msPerDay=24*60*60*1000
e_daysold=timeold/msPerDay
daysold=Math.floor(e_daysold);
e_hrsold=(e_daysold-daysold)*24;
hrsold=Math.floor(e_hrsold);
e_minsold=(e_hrsold-hrsold)*60;
minsold=Math.floor((e_hrsold-hrsold)*60);
seconds=Math.floor((e_minsold-minsold)*60);
span_dt_dt.innerHTML=""+daysold+"天"+hrsold+"小时"+minsold+"分"+seconds+"秒";
}
show_date_time();
</SCRIPT>
效果图:

评论