【问题标题】:wordpress plugin visit counter not working properlywordpress 插件访问计数器无法正常工作
【发布时间】:2019-07-17 10:54:11
【问题描述】:

我正在尝试为 wordpress 访客计数器制作插件并限制访客人数。我写了这段代码,但是每次刷新页面时,计数器变量都会增加 4 次或 5 次。基本上插件是免费访问用户应该登录访问网站后免费访问。请检查代码。

<?php
    $count=0;

    function ip_get(){

        if(!empty($_SERVER['HTTP_CLIENT_IP'])){
            //ip from share internet
            $new_ip = $_SERVER['HTTP_CLIENT_IP'];
        }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
            //ip pass from proxy
            $new_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }else{
            $new_ip = $_SERVER['REMOTE_ADDR'];
        }

        global $wpdb;
        $table_name=$wpdb->prefix.'wbs_user_ips';

        $results = $wpdb->get_results( "SELECT * FROM $table_name"); // Query to fetch data from database table and storing in $results
        if(empty($results)){
            $wpdb->insert($table_name,
                array(
                      'user_ip'=>$new_ip,      
                      'user_count'=>'1',      
                      'user_status'=>'0',    

                )
                );
        }

        if(!empty($results))     // Checking if $results have some values or not
        {  
            $count=0;
            foreach($results as $row){
                $ip= $row->user_ip;
                $count=$row->user_count;
            }

            if($ip==$new_ip){
                echo $count++;

                $wpdb->query($wpdb->prepare("UPDATE $table_name 
                            SET user_count=".$count."
                            WHERE user_ip = %s",$ip));
            }   
        } 
    }
?>

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    我认为您的 foreach 循环中有错误。 请确保您使用正确的hook

    <?php
    
    $count=0;
    
    function ip_get(){
    
        if(!empty($_SERVER['HTTP_CLIENT_IP'])){
            //ip from share internet
            $new_ip = $_SERVER['HTTP_CLIENT_IP'];
        }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
            //ip pass from proxy
            $new_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }else{
            $new_ip = $_SERVER['REMOTE_ADDR'];
        }
    
        global $wpdb;
        $table_name=$wpdb->prefix.'wbs_user_ips';
    
        $results = $wpdb->get_results( "SELECT * FROM $table_name"); // Query to fetch data from database table and storing in $results
        if(empty($results)){
            $wpdb->insert($table_name,
                array(
                      'user_ip'=>$new_ip,      
                      'user_count'=>'1',      
                      'user_status'=>'0',    
    
                )
                );
        }
    
        if(!empty($results))     // Checking if $results have some values or not
        {  
            $count=0;
            foreach($results as $row){
                $ip= $row->user_ip;
                $count=$row->user_count;
    
                if($ip==$new_ip){
                    echo $count++;
    
                    $wpdb->query($wpdb->prepare("UPDATE $table_name 
                            SET user_count=".$count."
                            WHERE user_ip = %s",$ip));
                }   
            }
        } 
    }
    ?>
    

    【讨论】:

    • 我想在用户访问页面时在前端显示计数,你能告诉我应该使用哪个钩子吗?
    • 我认为 'wp' 钩子适用于计数。你想在哪里显示访问?
    • 在主网站页面上。作为警报
    • 如果aler由Javascript渲染,你可以使用wp_head,或者你可以使用wp_footer并将html放在页脚中。
    • 但仍然计算变量增量 4 次,就像我的访问是 4,当我刷新页面时它直接进入 4 次,然后是 8 次,依此类推
    猜你喜欢
    • 2017-01-08
    • 2013-07-24
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多