wordpress统计某段时间用户发帖量-小星空博客

2021-11-16 1408阅读 0评论

  统计用户某段时间的发帖量,展示图片如图:

wordpress统计某段时间用户发帖量-小星空博客 ,wordpress统计某段时间用户发帖量-文曦博客 wordpress 统计某段时间 用户发帖量 文曦博客 第1张,wordpress,统计某段时间,用户发帖量,文曦博客,网,网站,博客,第1张

wordpress统计某段时间用户发帖量-小星空博客 ,wordpress统计某段时间用户发帖量-文曦博客 wordpress 统计某段时间 用户发帖量 文曦博客 第2张,wordpress,统计某段时间,用户发帖量,文曦博客,网,网站,博客,第2张

        可以排除某些用户ID

wordpress统计某段时间用户发帖量-小星空博客 ,wordpress统计某段时间用户发帖量-文曦博客 wordpress 统计某段时间 用户发帖量 文曦博客 第3张,wordpress,统计某段时间,用户发帖量,文曦博客,网,网站,博客,第3张


        可以调整选择页的选项个数,我的是12个月

wordpress统计某段时间用户发帖量-小星空博客 ,wordpress统计某段时间用户发帖量-文曦博客 wordpress 统计某段时间 用户发帖量 文曦博客 第4张,wordpress,统计某段时间,用户发帖量,文曦博客,网,网站,博客,第4张


        当然,你也可以自己设置时间比如:像我这样访问,改"|"分割的两个日期就行,"https://www.xxkblog.cn/postnum.php?act=2021-01-01|2021-12-31",这样就是统计2021一整年(从一月一号到十二月三十一号)的数据,而非一个月。postnum.php是我的PHP脚本,www.xxkblog.cn是我的网站,需要修改为自己的信息。

        代码如下,保存为PHP并保存到wordpress网站根目录,其他目录需要改第二行的wp-load.php位置:

<?phpinclude_once("wp-load.php");global $wpdb;function userpostnum($userid,$startdate,$enddate){//返回某人某天的文章数
    global $wpdb;
    $num = $wpdb->get_var(
        $wpdb->prepare("SELECT COUNT(ID) FROM `wp_posts`  WHERE  
        `post_author` = $userid
        AND post_type= 'post'
        AND post_status= 'publish'
        AND post_date between '$startdate' and '$enddate';")
        );
    return $num;}//成员$useridname = $wpdb->get_results("SELECT ID,display_name FROM `wp_users`");$useridnamenum = count($useridname);$chengyuan=array();for ($i = 0; $i < $useridnamenum; $i++) {
    $userid = $useridname[$i] -> ID;
    $username = $useridname[$i] -> display_name;
     if( $userid == 1 or $userid == 4 or $userid == 16 or $userid == 13 or $userid ==18 or $userid == 5 or $userid == 6 or $userid == 8 or $userid == 3 or $userid == 14 or $userid == 12 or $userid == 9){
         echo "";//排除人员
     }else{
         array_push($chengyuan,$useridname[$i]);
     }}//成员$userpostnum= null;$userspostnum= null;$act = $_REQUEST["act"];if($act == "shangyue"){$starttime = date('Y-m-01', strtotime('-1 month'));//上月一号$endtime = date('Y-m-t', strtotime('-1 month'));//上月最后一天}elseif($act == "benyue"){$starttime = date('Y-m-01');//本月一号$endtime = date('Y-m-d', strtotime("+1 month -1 day"));//本月最后一天}elseif($act){$date = explode("|",$act);$starttime = $date[0];//本月一号$endtime = $date[1];//本月最后一天}else{
    echo "<title>统计选择页</title>";$starttime = date('Y-m-01');//本月一号$endtime = date('Y-m-t');//本月最后一天
    for ($i = 0; $i < 12; $i++) {
         echo "<a href = 'postsnum.php?act=${starttime}|${endtime}'>${starttime}至${endtime}文章统计</a><br>";
        $starttime = date('Y-m-01', strtotime($starttime .'-1 month'));
        $endtime = date('Y-m-t', strtotime($starttime));//本月最后一天
    }
    exit("<a href = 'https://www.xxkblog.cn/'>返回小星空博客(www.xxkblog.cn)首页</a>");}$title = $starttime."至".$endtime."的学习详情";for ($i = 0; $i < count($chengyuan); $i++) {
    $userid = $chengyuan[$i]->ID;
    $username = $chengyuan[$i]->display_name;
    $userpostnum[$i] = userpostnum($userid,$starttime." 00:00:00",$endtime." 23:59:59");
    $userspostnum[$i] = array("value"=>$userpostnum[$i],"name"=>$username." ".$userpostnum[$i]);}function multi_dimension_sort(...$args){
        $arr = array_shift($args); // 取到要排序的数组,剩下的为要排序的键和排序类型
        $sort_arg = [];
        foreach($args as $arg){
            // 这里主要是为了得到排序的key对应的值
            $sort = $arr;
            if(is_string($arg)){
                $arg = explode('.', $arg); // 我设定参数里面多维数组下的键,用‘.’连接下级的键,这里得到键,然后下面循环取得数组$arr里面该键对应的值
                foreach($arg as $key){
                    $sort = array_column($sort, $key); // 每次循环$sort的维度就会减一
                }
                $sort_arg[] = $sort;
            }else{
                $sort_arg[] = $arg; // 排序方法SORT_ASC、SORT_DESC等
            }
        }
        $sort_arg[] = &$arr; // 这个数组大致结构为:[$sort, SORT_ASC, $sort2, SORT_DESC,$arr]
        
        call_user_func_array('array_multisort', $sort_arg); // 因为参数不确定数量,所以不能直接array_multisort($sort, SORT_ASC, $sort2, SORT_DESC,$arr),用call_user_func_array执行
        
        return($arr);
    }$info = multi_dimension_sort($userspostnum, 'value', SORT_DESC);$info = json_encode($info,JSON_UNESCAPED_UNICODE);?><!--
    THIS EXAMPLE WAS DOWNLOADED FROM https://echarts.apache.org/examples/zh/editor.html?c=pie-roseType-simple--><!DOCTYPE html><html style="height: 100%">
    <head>
        <meta charset="utf-8">
        <title><?php echo $title?></title>
    </head>
    <body style="height: 100%; margin: 0">
        <div id="container" style="height: 100%"></div>

        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
        <!-- Uncomment this line if you want to dataTool extension        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@{{version}}/dist/extension/dataTool.min.js"></script>
        -->
        <!-- Uncomment this line if you want to use gl extension        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
        -->
        <!-- Uncomment this line if you want to echarts-stat extension        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>
        -->
        <!-- Uncomment this line if you want to use map
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@{{version}}/map/js/china.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@{{version}}/map/js/world.js"></script>
        -->
        <!-- Uncomment these two lines if you want to use bmap extension        <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@{{version}}/dist/extension/bmap.min.js"></script>
        -->

        <script type="text/javascript">var dom = document.getElementById("container");var myChart = echarts.init(dom);var app = {};var option;option = {
  legend: {
    top: 'bottom'
  },
  toolbox: {
    show: true,
    feature: {
      mark: { show: true },
      dataView: { show: true, readOnly: false },
      restore: { show: true },
      saveAsImage: { show: true }
    }
  },
  series: [
    {
      name: 'Nightingale Chart',
      type: 'pie',
      radius: [50, 250],
      center: ['50%', '50%'],
      roseType: 'area',
      itemStyle: {
        borderRadius: 9
      },
      data: <?php echo($info);?>
    }
  ]};if (option && typeof option === 'object') {
    myChart.setOption(option);}

        </script>
    </body></html>




版权声明
  本站致力于为模板爱好者提供国内外插件开发技术和模板共享,着力为用户提供优资资源。
  本站提供的所有下载文件均为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
  我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。
  站长会进行审查之后,情况属实的会在三个工作日内为您删除。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1408人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码