• 17-12-2023, 19:17:09
    #1
    Arkadaşlar my_post_viewed meta keyinin meta value kısmında gördüğünüz gibi rakamlar var... wordpress'te bir konunun kaç kez görüntülendiği ben bunun toplamını nasıl yazdırabilirim frontend te? Yani kaç konu olursa olsun hepsinin metavalue rakamlarını toplayarak bir çıktı vericek.

  • 17-12-2023, 19:20:42
    #2


    Hocam öncelikle my_post_viewed meta keyini toplamak için bir php fonksiyonu oluşturmanız lazım diye düşünüyorum sonrasında da frontend de çağırırsanız istediğiniz şey sanırım olmuş olur.
  • 17-12-2023, 19:21:44
    #3
    MainMagnet adlı üyeden alıntı: mesajı görüntüle


    Hocam öncelikle my_post_viewed meta keyini toplamak için bir php fonksiyonu oluşturmanız lazım diye düşünüyorum sonrasında da frontend de çağırırsanız istediğiniz şey sanırım olmuş olur.
    saolunuz üstadım ama işte onu tam olarak nasıl yazacağım konusu yok... wordpress i ve mysql yapısını bilen bir arkadaş belki bir örnek oluşturur.
  • 17-12-2023, 19:28:54
    #4
    single.php dosyasına ekleyebilirsiniz;

    <?php
    $post_id = get_the_ID();
    $viewed_values = get_post_meta($post_id, 'my_post_viewed');
    $total_views = 0;
    foreach ($viewed_values as $viewed_value) {
        $total_views += intval($viewed_value);
    }
    echo 'Toplam Görüntülenme Sayısı: ' . $total_views;
    ?>
  • 17-12-2023, 19:32:51
    #5
    Çok saolunuz cansınız üstad. Fakat sanırım yalnış anlaşıldı ben single page te o konunun kaç kez görüntülendiğinden ziyade wp_postmeta table ında meta key my_post_viewed olan tabloların meta value lerini toplamını almak istiyorum. cahillikten bu kadar karmaşık anlatıyorum. Farklı bir sayfada aslında meta_key i my_post_viewed olan tüm satırların meta_value değerlerini çekip toplayarak yazdırmak.

    emrenogay adlı üyeden alıntı: mesajı görüntüle
    single.php dosyasına ekleyebilirsiniz;

    <?php
    $post_id = get_the_ID();
    $viewed_values = get_post_meta($post_id, 'my_post_viewed');
    $total_views = 0;
    foreach ($viewed_values as $viewed_value) {
        $total_views += intval($viewed_value);
    }
    echo 'Toplam Görüntülenme Sayısı: ' . $total_views;
    ?>
  • 17-12-2023, 19:38:09
    #6
    <?php 
    global $wpdb;
    $table_prefix = $wpdb->prefix; 
    $query = $wpdb->prepare("SELECT SUM(meta_value) AS total_views FROM {$table_prefix}postmeta WHERE meta_key = 'my_post_viewed'" ); 
    $total_views = $wpdb->get_var($query); 
    echo 'Görüntülenme Sayısı: ' . intval($total_views); 
    ?>
    Test etmedim fakat çalışıyor olması gerek. FTP kullanarak düzenlemenizi tavsiye ederim.
  • 17-12-2023, 19:41:37
    #7
    çalışıyor üstad localde editliyorum zaten hemen denedim elinize kolunuza sağlık. son bir soru çekinerek sormak istiyorum bu koda son 30 günü gösterek bir filtre eklenebilir mi? sürekli son 30 gündeki totaller gözüksün şeklinde. sanıyorum o biraz meşakatli bir durum. çok teşekkür ederim.

    emrenogay adlı üyeden alıntı: mesajı görüntüle
    <?php
    global $wpdb;
    $table_prefix = $wpdb->prefix;
    $query = $wpdb->prepare("SELECT SUM(meta_value) AS total_views FROM {$table_prefix}postmeta WHERE meta_key = 'my_post_viewed'" );
    $total_views = $wpdb->get_var($query);
    echo 'Görüntülenme Sayısı: ' . intval($total_views);
    ?>
    Test etmedim fakat çalışıyor olması gerek. FTP kullanarak düzenlemenizi tavsiye ederim.
  • 17-12-2023, 19:52:11
    #8
    thats adlı üyeden alıntı: mesajı görüntüle
    çalışıyor üstad localde editliyorum zaten hemen denedim elinize kolunuza sağlık. son bir soru çekinerek sormak istiyorum bu koda son 30 günü gösterek bir filtre eklenebilir mi? sürekli son 30 gündeki totaller gözüksün şeklinde. sanıyorum o biraz meşakatli bir durum. çok teşekkür ederim.
    Son 30 günde eklenen postların toplam görüntülenme sayısını alabiliriz;

    <?php
    global $wpdb;
    $table_prefix = $wpdb->prefix;
    $query = $wpdb->prepare(
        "SELECT SUM(meta_value) AS total_views
        FROM {$table_prefix}postmeta
        WHERE meta_key = 'my_post_viewed'
        AND post_id IN (
            SELECT post_id
            FROM {$table_prefix}postmeta
            WHERE meta_key = '_post_views_timestamp'
            AND meta_value >= %s
        )",
        date('Y-m-d H:i:s', strtotime('-30 days'))
    );
    $total_views = $wpdb->get_var($query);
    echo 'Son 30 Gün İçindeki Toplam Görüntülenme Sayısı: ' . intval($total_views);
    ?>
  • 18-12-2023, 02:16:01
    #9
    tum postları alıp, foreach içinde bu değeri toplayabilirsiniz. ancak kaynak tüketen bir uygulama olacaktır, ek olarak günlük/saatlik vs. cache yaparsanız faydalı olur.