2024 年 5 月 3 日 我的频道
Wordpress 格式化访问量
  • 2022
  • Sunny

一直以来就想弄个站点的总访问量,而且不用插件实现的,网上的一大堆,我特意选择了一个比较容易懂的代码进行修改和利用上了,效果还不错,代码如下:

//WordPress 获取站点总浏览量
function wb_site_count_user(){
    $addnum = rand(1,1);  //每个访客增加的访问数 5 - 10 的随机数
    session_start();
    $date = date('ymd',time());
    if(!isset($_SESSION['wb_'.$date]) && !$_SESSION['wb_'.$date]){        
        $count = get_option('site_count');
        if(!$count || !is_array($count)){
            $newcount = array(
                'all' => 0,
                'date' => $date,
                'today' => $addnum
            );
            update_option( 'site_count', $newcount );
        }else{
            $newcount = array(
                'all' => ($count['all']+$addnum),
                'date' => $date,
                'today' => ($count['date'] == $date) ? ($count['today']+$addnum) : $addnum
            );
            update_option( 'site_count', $newcount );
        }
        $_SESSION['wb_'.$date] = $newcount['today'];
    }
    return;
}
add_action('init', 'wb_site_count_user');

//输出访问统计
function web2go_view(){
    session_start();
    $sitecount = get_option('site_count');    
    $date = date('ymd',time());  
    echo number_format_short(absint($sitecount['all']));
}

显示功能正常后,如果访问量巨大,我们必须按照简写再次进行格式化,初衷我只选用了 php 的 number format 函数进行初步格式化,其用意只是加上逗号区分千位,容易看而已。而最后就是再利用自定义函数,把访问量格式化到 K、M、B、T 这些缩写当中,Github 上有一个源,利用上了,效果不错,详见本站的总访问量效果,代码如下:

//View Number Format
function number_format_short($n, $precision = 1) {
    if ($n < 900) {
        // 0 - 900
        $n_format = number_format($n, $precision);
        $suffix = '';
    } elseif ($n < 900000) {
        // 0.9k-850k
        $n_format = number_format($n * 0.001, $precision);
        $suffix = 'K';
    } elseif ($n < 900000000) {
        // 0.9m-850m
        $n_format = number_format($n * 0.000001, $precision);
        $suffix = 'M';
    } elseif ($n < 900000000000) {
        // 0.9b-850b
        $n_format = number_format($n * 0.000000001, $precision);
        $suffix = 'B';
    } else {
        // 0.9t+
        $n_format = number_format($n * 0.000000000001, $precision);
        $suffix = 'T';
    }

    if ($precision > 0) {
        $dotzero = '.' . str_repeat('0', $precision);
        $n_format = str_replace($dotzero, '', $n_format);
    }

    return $n_format . $suffix;
} 

直接输出:

<?php echo web2go_view(); ?>
STUDY
794
0

Author Box

名字:Sunny
注册:Jan 30, 2021
简介:技术菜鸟,拷贝、黏贴代码中 ……

Comment Box

0 0 投票数
Article Rating
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论