WordPress’te “Revision”ları engellemek

WordPress’in kullanışlı özelliklerinden biri, bir yazı taslağı üzerinde yaptığınız değişiklikleri, düzenli aralıklarla otomatik olarak kaydetmesi. Buna “Auto-save” özelliği deniyor. Böylece, mesela bir yazıyı yazmaya başladıktan sonra tarayıcınız kapanırsa, yazıyı kaydetmemiş olsanız bile bilgilerinizi çoğunlukla kurtarabiliyorsunuz. Bu gayet güzel bir özellik.

Ancak yine benzer şekilde, daha önce yayınladığınız bir yazıdaki ufak bir hatayı düzeltmek için, bir kod parçasını kopyalamak için, yeni bir etiket eklemek için… herhangi bir sebeple yazıyı tekrar düzenlemeye başladığınızda, yazının bir kopyası veritabanınızda “Revision” (Gözden geçirme) ismiyle tekrar kaydediliyor. Yazıyı hazırladığınız sırada da, yazıya her giriş çıkışınız bir revision olarak kaydediliyor. Böylece her yazının veritabanınızda 3-5, hatta bazen 10 kopyası bulunabiliyor.

Veritabanınızda 100-200 yazı yer alıyorsa bu bir problem olarak kabul edilmeyebilir. Neticede bu örnekte veritabanınızda toplam 500-600 kayıt bulunacaktır. Ancak 1000-2000 yazınız varsa ve bu yazılar, uzun yazılarsa, revisionlar ciddi bir problem olarak karşınıza çıkıyor.

1000 yazınızın ortalama 3’er kopyası varsa, veritabanınızda toplam 4000 yazı kaydı yer alıyor demektir. Bu da veritabanınızın neden 20-25 mb‘ı bulduğunu açıklıyor.

Veritabanı büyük olsa ne olur? Aslında çok şey oluyor. Evet, site performansınız belki etkilenmiyor ama, sunucunuzu değiştirmek istediğinizde veya phpMyAdmin benzeri bir veritabanı uygulaması kullanmak istediğinizde, büyük veritabanı boyutu işinizi zorlaştırıyor.

Sözün özü, “revision” mantığı oldukça yararlı ama, bir noktadan sonra suyu çıkıyor.

WordPress eklenti dizininde, veritabanınızda kayıtlı bulunan revisionları silmek için “Delete Revision” benzeri çeşitli eklentiler var. Daha önce eklenenler bir yana, bundan sonra, “Auto-save” özelliği haricinde, veritabanınıza revision eklenmesini istemiyorsanız, ana dizininizdeki wp-config.php dosyasına şu satırı eklemeniz yeterli. İşe yarıyor:

define ('WP_POST_REVISIONS', 0);

Default olarak WordPress, yazıyı hazırlarken her dakika otomatik kayıt yapıyor. Bunun sıklığını değiştirmeniz de mümkün. Aşağıdaki kodu wp-config.php dosyasına eklerseniz, 360 saniyede (6 dakikada) bir kayıt yapacaktır.

define('AUTOSAVE_INTERVAL', 360 ); // saniye

İbrahim

Hekim. Yazar, beğenirse çevirir, kod yazarak eğlenir. 2002'den beri internette yazıyor.

Sevebilirsin...

4 Yanıt

  1. fyfth dedi ki:

    Merhaba,

    Benim bir sorum olacaktı. sitenizdeki istatistik kısmı dikkatimi çekti

    Attığı yorum sayısı : ? diye bir bölüm var bunun kaynak kodunu bir türlü bulamadım. yorumu atan, yorumları gibi bir çok tag kodu mevcut wpde ? peki kişinin attığı yorum sayısını nasıl göstertebiliriz ?

  2. victory dedi ki:

    Fatih bey merhaba,

    Bunun için WordPress’in hazır bir tag yok. Biraz PHP kodlama ile istediğiniz sonuca ulaşabilirsiniz. Mesela Michael H.’ye ait şu kod, işinizi görebilir:

    0';
    $comment_counts = (array) $wpdb->get_results("
    SELECT user_id, COUNT( * ) AS total
    FROM {$wpdb->comments}
    {$where}
    GROUP BY user_id
    ", object);
    foreach ( $comment_counts as $count ) {
    $user = get_userdata($count->user_id);
    echo $user->display_name . 'isimli üyenin yorum sayısı:' . $count->total . '
    ';
    }
    ?>

    Sizi aramızda görmekten memnuniyet duyduk.

    İyi çalışmalar

  3. fyfth dedi ki:

    ozaman şöyle bir hata veriyor ben bunu bir php dosyasında göstertmeye çalısıyorum wpyi foruma bağladım forum post ları görünüyo, fakat wp deki toplam yorumu göstertmek istiyorum eklediğim zaman o koddan sonrakinde arry hatası alıyorum inceledim bir hatada görünmüyor ?

    :
    < ?php
    global $wpdb;
    $where = 'WHERE comment_approved = 1 AND user_id 0′;
    $comment_counts = (array) $wpdb->get_results(”
    SELECT user_id, COUNT( * ) AS total
    FROM {$wpdb->comments}
    {$where}
    GROUP BY user_id
    “, object);
    foreach ( $comment_counts as $count ) {
    $user = get_userdata($count->user_id);
    echo $user->display_name . ‘isimli üyenin yorum sayısı:’ . $count->total . ‘
    ‘;
    }
    ?>

    böyle eklediğimde ise kodlar görünüyor aktif olmuyor kodlar ?

    :
    <?php
    global $wpdb;
    $where = 'WHERE comment_approved = 1 AND user_id 0’;
    $comment_counts = (array) $wpdb->get_results(”
    SELECT user_id, COUNT( * ) AS total
    FROM {$wpdb->comments}
    {$where}
    GROUP BY user_id
    “, object);
    foreach ( $comment_counts as $count ) {
    $user = get_userdata($count->user_id);
    echo $user->display_name . ‘isimli üyenin yorum sayısı:’ . $count->total . ‘
    ‘;
    }
    ?>
    böyle eklersem yorum sayısı gorunuyor fakat, böyle oluyor

    Toplam İleti : 2
    Toplam Yorum : leqendaryisimli �yenin yorum say�s�:1
    Yeni PM :
    Fatal error: Cannot use object of type stdClass as array in /home/diabloturk.com/httpdocs/wp-content/plugins/wp-phpbb-bridge/inc/widgets/wpbb_users_widget.php on line 251 böyle bir hata alıyorum

  4. fyfth dedi ki:

    böyle bir kodlama yapıyım dedim

    post_author; //change this if not in a std post loop
    $where = ‘WHERE comment_approved = 1 AND user_id = ‘ . $user_id ;
    $comment_count = $wpdb->get_var(
    “SELECT COUNT( * ) AS total
    FROM {$wpdb->comments}
    {$where}
    “);
    $user = get_userdata($user_id);
    $post_count = get_usernumposts($user->ID);
    echo $user->display_name . ‘isimli üyenin yorum sayısı:’ . $comment_count . ‘
    ‘;

    ?>

    düzeldi fakat böyle yorumu göstermiyor 🙂 $comment_count ile sorguluyor ama yorum sayısı görünmüyor bir hatada bulamadım benmi yorgunluktan göremiyorum anlamıyorumki