查看: 597|回复: 0

[WordPress插件] WordPress后台增加百度统计小工具,实时显示PV/UV/IP等数据

[复制链接]
  • TA的每日心情

    5 小时前
  • 签到天数: 427 天

    [LV.9]以坛为家II

    1142

    主题

    513

    回帖

    2万

    积分

    管理员|UID:1

    金钱:7955

    贡献:5000

    威望:5020

    发表于 2023-3-14 14:15:23 | 显示全部楼层 |阅读模式
    1.png


    做网站肯定要了解相关网站数据,有时候懒得登陆查看,例如一些PV/UV/IP等数据,那么我们可以直接使用百度统计的api,在WordPress的后台仪表盘进行一个简单的显示,这里为大家整理了一些函数,大家直接放在主题的functions.php文件中即可。并且全局AJAX调用,也不会拖慢后台的速度

    显示效果如下:

    2.png


    实现方式如下:

    首先需要使用到WordPress使用wp_remote_get和wp_remote_post进行get和post请求,并封装为函数:

    具体方法大家自行百度

    这里需要调用其doPost方法

    1. function zeo_get_baidu_analyse()
    2. {
    3.     $url = 'https://api.baidu.com/json/tongji/v1/ReportService/getData'; //百度商业账号请求地址
    4.     // 账户类型,默认1即可
    5.     $type         = '1';
    6.     // 站点ID,可以提供地址栏拿到
    7.     $siteId     = 'xxx';
    8.     // 登录百度统计的用户名
    9.     $username   = 'xxx';
    10.     // 登录百度统计的密码
    11.     $password   = 'xxx';
    12.     // Token 获取方式:https://tongji.baidu.com/web/help/article?id=129&type=0
    13.     $toekn      = _opz('baidu_tongji_token');
    14.     //统计天数,维度,默认1
    15.     $day = 1;
    16.     $headers = array(
    17.         'Content-Type' => ' application/json'
    18.     );
    19.     $data_body = [
    20.         'header' => [
    21.             'account_type'  => $type,
    22.             'username'      => $username,
    23.             'password'      => $password,
    24.             'token'         => $toekn,
    25.         ],
    26.         'body' => [
    27.             'siteId'        => $siteId,
    28.             'method'        => 'overview/getTimeTrendRpt',
    29.             'start_date'    => date('Y-m-d', strtotime("-" . $day . " day")),
    30.             'end_date'      => date('Y-m-d'),
    31.             'metrics'       => 'pv_count,ip_count,visitor_count',
    32.             'gran'          => 'day',
    33.             'max_results'   => $day
    34.         ]
    35.     ];
    36.     try {
    37.         $json = doPost($url, array(
    38.             'headers' => $headers,
    39.             'body' => json_encode($data_body),
    40.             'timeout' => 30,
    41.         ));
    42.         $json = json_decode($json);
    43.     } catch (\Exception $e) {
    44.         echo array('error' => 1, 'msg' => $e->getMessage());
    45.         exit();
    46.     }
    47.     zeo_ajax_die($json);
    48. }
    49. add_action('wp_ajax_get_baidu_analyse', 'zeo_get_baidu_analyse'); //管理员调用
    复制代码
    1. function zeo_ajax_die($data, $code = 0)
    2. {
    3.     $json['code'] = $data->code;
    4.     $json['data'] = $data->body;
    5.     wp_die(json_encode($json));
    6. }
    复制代码
    最后就是创建WordPress仪表盘,并显示数据了,代码如下:

    1. function zeo_add_dashboard_widgets()
    2. {
    3.     wp_add_dashboard_widget('custom_help_widget', '百度统计数据', 'zeo_baidu_analyse_form');
    4. }
    5. add_action('wp_dashboard_setup', 'zeo_add_dashboard_widgets');

    6. function zeo_baidu_analyse_form()
    7. {
    8.     $html_s = '
    9.     <table class="zeo-bd-table"><thead><tr><th>日期</th><th>浏览量</th><th>访客数</th><th>IP 数</th></tr></thead>
    10.       <tr><td>今日</td><td class="nowt-uv"></td><td class="nowt-pv"></td><td class="nowt-ip"></td></tr>
    11.       <tr><td>昨日</td><td class="yest-uv"></td><td class="yest-pv"></td><td class="yest-ip"></td></tr>
    12.     </table>';
    13.     $script_s = '<script type="text/javascript">
    14.         (function ($, window, document) {
    15.             var data = {action: "get_baidu_analyse"}
    16.             $.post("' . AJAX_URL . '", data, function (data) {
    17.                 var obj = JSON.parse(data);
    18.                 if(obj.code == 200){
    19.                     
    20.                     var yest = obj.data.body.data[0].result.items[1][0];
    21.                     var nowt = obj.data.body.data[0].result.items[1][1];
    22.                     $(".nowt-uv").text(nowt[0]);
    23.                     $(".nowt-pv").text(nowt[1]);
    24.                     $(".nowt-ip").text(nowt[2]);

    25.                     $(".yest-uv").text(yest[0]);
    26.                     $(".yest-pv").text(yest[1]);
    27.                     $(".yest-ip").text(yest[2]);
    28.                 }else{
    29.                     $(".nowt-uv").text("0");
    30.                     $(".nowt-pv").text("0");
    31.                     $(".nowt-ip").text("0");

    32.                     $(".yest-uv").text("0");
    33.                     $(".yest-pv").text("0");
    34.                     $(".yest-ip").text("0");
    35.                 }
    36.                });
    37.            
    38.         })(jQuery, window, document);
    39.         </script>';
    40.     echo $html_s;
    41.     echo $script_s;
    42. }
    复制代码


    温馨提示:
    1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
    2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
    3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
    4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
    5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
    ----------------------------------------------------------------------------------------------------------------------------
    文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
    版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关于我们

    关于我们

    免责声明

    服务条款

    服务支持

    常见问题

    论坛公告

    投诉/建议联系

    jinqike1026@163.com

    论坛仅限于编程技术相关的交流探讨与分享,

    严禁在此发布违规违法帖子,否则后果自负!

    关注微信公众号

    51LA统计|Archiver|手机版|小黑屋|金小颖论坛 ( 浙ICP备2022006091号 )|网站地图

    GMT+8, 2024-3-29 14:57 , Processed in 0.204110 second(s), 42 queries .

    Powered by Discuz! X3.5

    Copyright © 2001-2024 Tencent Cloud.