Yanlış Sayan Sayfa Sayacı

Halil İbrahim Özdemir

Bazen kafama takılan bir şeyi çözmek için durmadan çözüm yoları düşünürüm. Bazen işler içinden çıkılmaz bir hal alır ve probleme çözüm yolu üretmek, bende bir takıntı halini alır.

WordPress’i kullanmaya başladığımda, siteme istediğim özellikleri kazandırmak için çeşitli eklentiler kullanmıştım. Ama bir türlü istediğim tüm özellikleri kazandıramayıp, eklenti yazmak zorunda kalmıştım. SihirliHikaye.com‘u yaparken de eklenti olayından bıkıp wordpress ile çözemediğim birçok noktayı Joomla ile aşmıştım. Eklenti kullanmaktan bıktığım için; ne özellik istesem kendim yazarım. Çok gerekli olmadıkça eklentiye başvurmak istemiyorum. Bu aynı zamanda kendimi geliştirmeme de yardım ediyor.

Bu siteyi yayınlamadan önce temayı bitirmiştim ve bir sayaç ihtiyacı hissedip, yazıların kaç kez ziyaret edildiğini sayan bir sayaç yazmıştım. Daha sonra tuttum sadece yazıları değil, açılan tüm sayfaları sayayım dedim ve daha gelişmiş bir sayaç yazdım. Sayacın, mantıken sayfanın toplam kaç kez gezildiğini ve o gün kaç kez gezildiğini sayması gerekiyordu. Bugün fark ettim ki sayaç günlük sayıyı tutmakta problem çıkarıyor. Ben de bu problemi çözmek için kolları sıvadım. Düşünceme göre bu ufak bir problemdi ve fazla sorun çıkarmazdı.

Soruna sebep olan kontrolü değiştirip sorunu çözdüğümü düşünürken, tamamen tesadüfî olarak başka bir problem fark ettim. Bir yazı görüntülendiğinde sayaç, bu yazıdan sonra yazılmış ilk yazının ziyaret sayısını da arttırıyordu. Yani sondan bir önceki yazı açılınca sayaç, son yazıyı da açılmış sayıyordu.

4-5 saatlik bir uğraştan sonra bir türlü hatayı tespit edemeyip iyiden iyiye sinirlenmeye başlamıştım ki yaptığım uçuk bir denemeyle sonuca ulaştım. Peki, neydi bu deneme?

add_action('wp_head', 'hal_counter_add');

Komutu ile sayaç fonsiyonumu wordpress temasındaki başlık fonksiyonunun kuyruğuna bağlamıştım. Deneme yaparken tuttum ayak kısmının kuyruğuna bağladım.

add_action('wp_footer', 'hal_counter_add');

Yani wordpress; bir yazı görüntülendiğinde, bundan bir sonraki yazının başlık fonksiyonunu da çalıştırıyormuş. (Sanırım…) Ayrıca ne diye sayfa sayacını başlık fonksiyonuna bağladıysam???

Not: “add_action” fonksiyonu, wordpress’de bir kanca (hook) fonksiyonudur. “add_action(‘wp_head’, ‘hal_counter_add’);” komutu; “wp_head” fonksiyonundan sonra “hal_counter_add” fonksiyonunu çalıştır anlamındadır. Kuyruk muhabbeti tamamen doğaçlamadır.

Ve nihayet sorunun kaynağını buldum. [[sihirliHikaye.com]]’u drupal’a aktarırken tesadüfen keşfettim. WordPress’te sonraki sayfaya ya da önceki sayfaya kolay ulaşmayı sağlayan bağlantı fonksiyonu, sitenin başlık kısmına şu html etiketlerini ekliyor:

<link rel='index' title='...' href='...' />
<link rel='start' title='...' href='...' />
<link rel='prev' title='...' href='...' />
<link rel='next' title='...' href='...' />

İşte bu etiketlere bakarak bir sonraki ya da bir önceki sayfayı gizlice önbelleğe alan tarayıcı da benim uzun zamandır çözmeye uğraştığım sorunu ortaya çıkarıyor.

Bir cevap yazın