• 10-06-2023, 19:32:22
    #1
    Merhabalar WordPress için bir toplam online süre hesaplama eklentisi yazmaya çalıştım.son_giris_zamani ve son_cikis_zamanini veritabanına kayıt ediyorum ve daha sonra her çıkış yaptığında toplam_suresi verisini güncelleme çalışıyorum varolan verinin üzerine toplyarak gidecek bende kullanının tüm zamanlar toplam aktif kalma süresini görebileceğim fakat bir türlü toplam_suresi verisi güncellenmiyor Eklenti kodlarım aşağıdaki gibidir

    <?php
    /*
    Plugin Name: Kullanıcı Giriş Süresi
    Plugin URI: https://www.example.com/
    Description: WordPress kullanıcılarının giriş sürelerini takip etmek için özel bir eklenti.
    Version: 1.0
    Author: Your Name
    Author URI: https://www.example.com/
    License: GPL2
    */
    
    // Admin panelinde Kullanıcılar menüsüne altında yeni bir sayfa ekleyelim
    function kullanici_suresi_menu_ekle() {
        add_users_page( 'Kullanıcılar', 'Kullanıcılar', 'read', 'kullanici-suresi-sayfa', 'kullanici_suresi_sayfa_icerik' );
    }
    add_action( 'admin_menu', 'kullanici_suresi_menu_ekle' );
    
    // Kullanıcılar sayfasındaki tablo içeriği
    function kullanici_suresi_sayfa_icerik() {
        $users = get_users();
        ?>
        <div class="wrap">
            <h1>Kullanıcı Giriş Süreleri</h1>
            <table class="wp-list-table widefat fixed striped">
                <thead>
                    <tr>
                        <th>Kullanıcı Adı</th>
                        <th>İsim Soyisim</th>
                        <th>E-posta Adresi</th>
                        <th>Toplam Süresi (Dakika)</th>
                        <th>Online Süresi (Dakika)</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ( $users as $user ) : ?>
                        <tr>
                            <td><?php echo $user->user_login; ?></td>
                            <td><?php echo $user->display_name; ?></td>
                            <td><?php echo $user->user_email; ?></td>
                            <td><?php echo kullanici_giris_suresi_hesapla( $user->ID ); ?></td>
                            <td><?php echo kullanici_online_suresi_guncelle( $user->ID ); ?> Dakika</td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
        <?php
    }
    
    // Kullanıcının giriş ve çıkış zamanlarını kaydetmek için fonksiyonlar
    function kullanici_giris_zamani_kaydet( $user_login, $user ) {
        $user_id = $user->ID;
        update_user_meta( $user_id, 'son_giris_zamani', current_time( 'mysql' ) );
    }
    
    add_action( 'wp_login', 'kullanici_giris_zamani_kaydet', 10, 2 );
    
    
    
    function kullanici_cikis_zamani_kaydet() {
        $cur_cikis = current_time('mysql');
        $userinfo = wp_get_current_user();
        update_user_meta( $userinfo->ID, 'son_cikis_zamani', $cur_cikis );
    }
    add_action('clear_auth_cookie', 'kullanici_cikis_zamani_kaydet', 10);
    
    
    function kullanici_giris_suresi_hesapla( $user_id ) {
        $login_time = get_user_meta( $user_id, 'son_giris_zamani', true );
        $logout_time = get_user_meta( $user_id, 'son_cikis_zamani', true );
    
        if ( $login_time && $logout_time ) {
            $diff = $logout_time  -  $login_time ;
            $minutes = round( $diff / 60 );
    
            // Mevcut toplam süreyi al
            $total_time = get_user_meta( $user_id, 'toplam_suresi', true );
    
            // Eski süreyi yeni süre ile topla
            $total_time += $minutes;
    
            // Toplam süreyi güncelle
            update_user_meta( $user_id, 'toplam_suresi', $total_time );
          
            return $total_time;
        }
    
        return 0;
    }
    
    // Kullanıcının online süresini güncellemek için fonksiyon
    function kullanici_online_suresi_guncelle( $user_id ) {
        $login_time = get_user_meta( $user_id, 'son_giris_zamani', true );
        $current_time = current_time( 'mysql' );
    
        if ( $login_time ) {
             $diff = strtotime( $current_time ) - strtotime( $login_time );
             $minutes = round( $diff / 60 );
    
            // Online süreyi güncelle
            update_user_meta( $user_id, 'online_suresi', $minutes );
    
            return $minutes;
        }
    
        return 0;
    }
  • 10-06-2023, 19:35:58
    #2
    hocam php bbcodelari icine alsaniz daha rahat okunabilir kodlar.
  • 10-06-2023, 19:39:35
    #3
    d3nnis adlı üyeden alıntı: mesajı görüntüle
    hocam php bbcodelari icine alsaniz daha rahat okunabilir kodlar.
    öneriniz için teşekkürler
  • 10-06-2023, 21:27:50
    #4
    ücretli destek sağlayabiliriz
  • 11-06-2023, 11:50:13
    #5
    OneGui adlı üyeden alıntı: mesajı görüntüle
    ücretli destek sağlayabiliriz
    teklifinizi pm olarak bekliyorum.
  • 11-06-2023, 18:24:00
    #6
    Orgeneral adlı üyeden alıntı: mesajı görüntüle
    teklifinizi pm olarak bekliyorum.
    imzadan ulaşırsanız teklif verebiliriz