wordpress admin toplam veri sayfası kontrol gözlem eklentisi

Genel Forum
Cevapla
muratca61
Site Admin
Mesajlar: 35964
Kayıt: Cmt Ara 21, 2024 7:56 am

wordpress admin toplam veri sayfası kontrol gözlem eklentisi

Mesaj gönderen muratca61 »

Kod:Tümünü seç

bir wordpress eklentisi yapalım bu eklenti sadece admin sayfasında bize verileri verecek. bir tablo halinde toplam yazı sayısı , toplam gösterim sayısı , toplam taslak yazı sayısı , toplam çöpteki yazı sayısı , toplam üye sayısı , toplam yorum sayısı , toplam media sayısı ve toplam veri boyutu , toplam wordpress veri tabanı boyutu , toplam veri tabanı tablo sayısı , şimdilik bu kadar ama devamı gelecek
Aşağıdaki örnek kod, isteklerinize uygun basit bir WordPress eklentisi oluşturur. Bu eklenti, admin panelinde "Veri Dashboard" adlı bir sayfa açarak, belirtilen istatistikleri (yazı, taslak, çöp, üye, yorum, medya sayısı ve medya dosyalarının toplam boyutu, veritabanı boyutu ve tablo sayısı) tablo halinde görüntüler.

Not:

WordPress'in varsayılan olarak "gösterim sayısı" (post view count) takibi yoktur. Bu yüzden örnekte bu değeri 0 olarak gösterdik. İleride bu işlevi eklemek için özel alan veya bir sayaç mekanizması kurmanız gerekebilir.
Medya dosyalarının boyutunu hesaplamak için uploads klasöründeki dosya boyutları toplanıyor; dosya sayısı çok fazlaysa bu işlem biraz zaman alabilir.
Ek özellikler eklemek istediğinizde, bu temel yapıyı genişletebilirsiniz.
Aşağıdaki kodu bir PHP dosyası (örneğin

Kod:Tümünü seç

admin-data-dashboard.php
) olarak kaydedip, WordPress'in wp-content/plugins/ klasörüne yerleştirip eklentileri etkinleştirmeniz yeterlidir.

Kod:Tümünü seç

<?php
/*
Plugin Name: Admin Data Dashboard
Description: Admin sayfasında çeşitli WordPress verilerini tablo halinde gösterir.
Version: 1.0
Author: İsminiz
*/

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Direkt erişimi engelle
}

// Admin menüye eklenti sayfası ekleyelim.
add_action('admin_menu', 'add_admin_data_dashboard_menu');
function add_admin_data_dashboard_menu() {
    add_menu_page(
        'Veri Dashboard',         // Sayfa başlığı
        'Veri Dashboard',         // Menü başlığı
        'manage_options',         // Yetki
        'admin-data-dashboard',   // Menü slug'ı
        'render_admin_data_dashboard_page', // Görüntüleme fonksiyonu
        'dashicons-chart-area',   // Menü ikonu
        3                         // Menü sırası
    );
}

// Admin sayfasını oluşturacak fonksiyon
function render_admin_data_dashboard_page() {
    global $wpdb;
    
    // Yazı istatistikleri
    $post_counts = wp_count_posts('post');
    $total_posts  = intval($post_counts->publish);
    $draft_posts  = intval($post_counts->draft);
    $trash_posts  = intval($post_counts->trash);
    
    // Gösterim sayısı: WordPress varsayılanında tutulmaz. Şimdilik 0 olarak ayarlanıyor.
    $total_views = 0;
    
    // Üye sayısı
    $user_counts = count_users();
    $total_users = intval($user_counts['total_users']);
    
    // Yorum sayısı
    $comment_counts = wp_count_comments();
    $total_comments = intval($comment_counts->approved);
    
    // Medya istatistikleri: Toplam medya sayısı ve dosya boyutları
    $media_args = array(
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
        'fields'         => 'ids',
    );
    $media_ids = get_posts($media_args);
    $total_media = count($media_ids);
    
    $total_media_size = 0;
    foreach ( $media_ids as $media_id ) {
        $file = get_attached_file($media_id);
        if ( $file && file_exists($file) ) {
            $total_media_size += filesize($file);
        }
    }
    // Boyutu okunabilir formata çevirelim
    $total_media_size_readable = size_format($total_media_size);
    
    // Veritabanı istatistikleri: Toplam veritabanı boyutu ve tablo sayısı
    $tables = $wpdb->get_results("SHOW TABLE STATUS");
    $total_db_size = 0;
    foreach ( $tables as $table ) {
        $total_db_size += $table->Data_length + $table->Index_length;
    }
    $total_db_size_readable = size_format($total_db_size);
    $total_tables = count($tables);
    ?>
    <div class="wrap">
        <h1>Veri Dashboard</h1>
        <table class="wp-list-table widefat fixed striped">
            <thead>
                <tr>
                    <th>Veri</th>
                    <th>Değer</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Toplam Yazı Sayısı</td>
                    <td><?php echo $total_posts; ?></td>
                </tr>
                <tr>
                    <td>Toplam Gösterim Sayısı</td>
                    <td><?php echo $total_views; ?></td>
                </tr>
                <tr>
                    <td>Toplam Taslak Yazı Sayısı</td>
                    <td><?php echo $draft_posts; ?></td>
                </tr>
                <tr>
                    <td>Toplam Çöpteki Yazı Sayısı</td>
                    <td><?php echo $trash_posts; ?></td>
                </tr>
                <tr>
                    <td>Toplam Üye Sayısı</td>
                    <td><?php echo $total_users; ?></td>
                </tr>
                <tr>
                    <td>Toplam Yorum Sayısı</td>
                    <td><?php echo $total_comments; ?></td>
                </tr>
                <tr>
                    <td>Toplam Media Sayısı</td>
                    <td><?php echo $total_media; ?></td>
                </tr>
                <tr>
                    <td>Toplam Media Veri Boyutu</td>
                    <td><?php echo $total_media_size_readable; ?></td>
                </tr>
                <tr>
                    <td>Toplam WordPress Veri Tabanı Boyutu</td>
                    <td><?php echo $total_db_size_readable; ?></td>
                </tr>
                <tr>
                    <td>Toplam Veri Tabanı Tablo Sayısı</td>
                    <td><?php echo $total_tables; ?></td>
                </tr>
            </tbody>
        </table>
    </div>
    <?php
}
?>



Cevapla