SEO hurafeleri

Bir konu hakkında ne kadar çok uzman var ise o konuda uzman sayısından katbekat fazla da enformasyon var demektir. Bu enformasyonun alıcı tarafında bulunan kişiler; konu SEO gibi hem görünüşte kolay hem de prestiji bol bir alan olduğunda kısa zamanda diğer tarafa geçmeye hevesleniyor ve bir anda deyim yerindeyse başımıza SEO uzmanı kesiliveriyorlar. Bu durumda da bir bilginin dilden dile, elden ele dolaşması sonucu da doğal olarak vermek istediği mesajın dışına çıkarak evrim geçirmesi kaçınılmaz oluyor, sonuçta da hurafe haline geliyor.

Epey uzun zamandır kişisel site sahibi ve çok sık olmasa da çeşitli konularda yazılar yazan biri olarak literatüre SEO olarak giren arama motoru optimizasyonu konusunda yazı yazmamayı prensip edinmiştim. Fakat gerek sosyal mecrada, gerekse forumlarda gördüğüm kadarıyla her iki devrik cümle kurmayı becerebilenin SEO uzmanı olduğunu iddia etmesi ve bu konuda makaleler yazmaya yeltenmesi üzerine, herkesin ezberi haline gelen bazı yanlışlıkları düzeltme gerekliliği bu prensibimi bir kenara bırakmamı zorunlu kıldı. Artık bu sitede SEO kategorisi de var ve SEO yani arama motoru optimizasyonu konusunda da sıklıkla olmasa da ara sıra yazılar göreceksiniz.

Bu kategorinin ilk yazısına konu olarak SEO alanında herkesin diline pelesenk olmuş ve mutlak doğru kabul edilen fakat sadece ezberden öteye gitmeyen bazı yanlışları / eksikleri yani SEO hurafelerini dilimin döndüğünce listeleyip açıklamaya çalışacağım.

Lafı fazla uzatmadan SEO konusunda hurafe haline gelmiş, aslında çok az gerçekliği olan veya hiç olmayan bazı yerleşik kanıları listelemeye başlayalım.

1. “Alan adının SEO üzerine etkisi çok fazladır”

Baştan sona hurafe olan bir kanıdır bu. Deyim yerindeyse ipin ucunu kaçırmayacak derecede makul ve mantıklı olduğu müddetçe bir alan adının diğer alan adı üzerine üstünlüğünün olduğunu söylemek saçmalıktan öteye gitmez. Bunun en güzel örneğini FriendFeed üzerinde yapılan bir tartışma esnasında yaptığım ufak bir araştırma sonucu görmüştüm ki oradaki verileri kısaca buraya da aktarmakta fayda var:

Aranan kelime; haber. Gösterilen ilk 10 sonuçtan 6’sının alan adında haber kelimesi geçiyor, 4’ünde geçmiyor. 1., 8., 9. ve 10. sırada gösterilen sitelerin alan adlarında anahtar kelime (haber) yok. Bu sonucu sağlıklı değerlendirebilmek için içeriği haber olan sitelerin tamamının alan adlarını bilmek, bu alan adlarından kaçında haber kelimesinin geçip kaçında geçmediği istatistiğine sahip olmak gerekiyor. Normal şartlar altında (ilk 10 sonuca bakarak) bu oranın 6’ya 4 olması gerekiyor. Yani 100 haber sitesinin 60’ının alan adında haber kelimesinin geçmesi gerekiyor. Fakat arama sonucunun diğer sayfalarını da incelediğinizde bunun mümkün olmadığını görüyorsunuz. Bu sonuçtan yola çıkarak alan adında anahtar kelime geçmeyen sitelerin alan adında anahtar kelime geçen birçok siteyi (hem de haddinden fazla çok siteyi) geride bıraktığını görüyoruz ki bu; alan adında anahtar kelimenin geçmesinin önemli olduğunu iddia edenlerin düşüncesinin aksini gösteriyor.

Aranan kelime; spor. Gösterilen ilk 10 sonuçtan 5’inin alan adında spor kelimesi geçiyor, 5’inde geçmiyor.

Aranan kelime; futbol. Gösterilen ilk 10 sonuçtan 2’sinin alan adında futbol kelimesi geçiyor, 8’inde geçmiyor.

Aranan kelime; kadın. Gösterilen ilk 10 sonuçtan 6’sının alan adında kadın kelimesi geçiyor, 4’ünde geçmiyor.

Aranan kelime; resim. Gösterilen ilk 10 sonuçtan 6’sının alan adında resim kelimesi geçiyor, 4’ünde geçmiyor.

Burada değinmeden geçemeyeceğim ve üzerinde durulması gereken başka bir konu daha var; alan adlarında geçebilecek kadar jenerik veya kısa anahtar kelimelerde üst sıralarda çıkarak hatırı sayılır miktarda ziyaretçi sağlamak günümüzde artık mümkün değildir. Çünkü neredeyse her alanda artık marka haline gelmiş kurumlar ve bu kurumların siteleri vardır. Ziyaretçi, jenerik / kısa anahtar kelimelerle arama yapmak yerine marka ismiyle veya daha çok sonuç verecek genel kelimeler yerine daha dar çerçevesi bulunan ve ulaşmak istediği şeye en yakın sonuç verecek kelime öbekleri ile arama yapmayı tercih etmektedir. Yani haber okumak isteyen bir kişi “haber” anahtar kelimesi ile arama yapıp çıkan sonuçlardan birini seçmek yerine “haber7” veya “haberturk” gibi kelimelerle arama yapmaktadır. Bu durumun kulağa saçma veya mantıksız gelmesi gerçek bir tespit olmasını değiştirmiyor!

2. “Alan adının uzantısı SEO açısından çok önemlidir”

Bu da başka bir hurafedir ve gerçeklik payı neredeyse hiç yoktur. Alan adı uzantıları tespit edilirken yapılan daha doğrusu düşünülen sınıflandırma çok da başarılı olamadığı için alan adı uzantısı artık arama motorları için siteleri sınıflandırma / kategorize etme kriteri olmaktan çıkmıştır. Resmi belgelerle alınabilen uzantılar (edu, edu.tr, gov, gov.tr vs.) ve katı kayıt kuralları bulunan ülke uzantıları dışında kalan alan adı uzantıları arama motorları için artık birbirinden farksızdır.

Bazı alan adı uzantılarının (edu ve gov gibi) kısa sürelerde yüksek PageRank değerleri alması, bu uzantılara arama motorları tarafından özel muamele yapıldığını düşündürse de bu durumun makul ve mantıklı gerekçelerinin olduğunu söylemek yanlış olmaz. Nitekim bir kamu sitesinin referans gösterilme oranı ile kişisel veya alelade bir sitenin referans gösterilme oranı aynı değildir. Özellikle üniversitelere tahsisli edu uzantılı sitelere oldukça çok site tarafından bağlantı verilmesi, bu sitelerin PageRank değerlerinin kolay bir şekilde yükselmesine neden olmaktadır. Bir de bu sitelerin kendi aralarında bağlantı ağı örmeleri (üniversitelerin diğer üniversitelere, kamu kurumlarına bağlantı vermesi) de yine başka bir olumlu etkendir ve zaten yüksek olan PageRank değerlerini daha da yükseltmektedir.

3. “Kopya içerikle yüksek ziyaretçi sayılarına ulaşmak mümkün değildir”

Bu kanı da yanlıştır ve pekala kopya içerikle on binlerce hatta yüz binlerce ziyaretçiye ulaşılabilir. Eğer bu sav doğru olsa idi yüzbinlerce ziyaretçisi olan haber sitelerinin sinek avlaması gerekirdi. Çünkü bütün haber siteleri bir elin parmaklarını geçmeyecek sayıdaki haber ajanslarından beslenmektedir ve yayınladıkları haberlerin neredeyse tamamı kopya içerik olarak nitelendirilebilir. Tabi burada bizim görevimiz, içeriğin elde ediliş şeklinin yasallığını sorgulamak değildir. Çünkü arama motorları, bir sitede yayınlanan içeriğin ajanslardan ücreti mukabili alınıp alınmadığını bilecek yetilere (en azından şimdilik) sahip değillerdir.

Çoğu zaman öyle olaylarla karşılaşıyoruz ki; bir yazının ilk defa yayınlandığı (deyim yerindeyse yazı sahibi) site, arama sonuçlarında aynı yazıyı çalıp yayınlayan kopyacı sitelerden daha alt sıralarda çıkabilmektedir. İşte burada içeriğin kopya olup olmamasının önemini en aza indiren hatta sıfırlayan önemli bazı kriterler devreye girmektedir. Bu kriterler, ayrıca bir yazı konusu olacak kadar geniş olduğu için şimdilik değinmeyeceğim.

Sonuç olarak; alan adının site imajı için ve orta-uzun vadede marka olabilmek adına oldukça önemli olduğu yadsınamaz bir gerçektir. Ama alan adının ve uzantısının popüler arama motorlarının sıralama kriterlerinde etken olması olasılığı yok denecek derecede zayıftır. Arama motorları içerikle, içeriğin sunuluş biçimiyle, teknikle ve yapıyla ilgilenirler, içeriğin hangi uzantıya sahip alan adında yayınlandığı ile değil!..

WordPress metin editörünün gizli butonlarını göstermek

Bazı durumlar vardır ki; WordPress gelişmiş metin editörünün kabiliyetleri kifayetsiz kalır. Size lazım olan düğmelerin metin editöründe olmadığını görür ve üzülürsünüz. Çare aradığınızda ise karşınıza bir sürü dosyadan oluşan ve 1 MB’tan daha fazla yer kaplayan TinyMCE Advanced eklentisi çıkar. Oysa ekleyeceğiniz bir – iki masum düğme için bu eklentiye katlanmak zorunda değilsiniz. Bir kaç minik kod ile istediğiniz düğmeyi metin editörüne ekleyebilirsiniz.

WordPress metin editörünün varsayılan düğmeleri arasında yer almayan fakat kullanılabilen birçok düğme var TinyMCE’de. WordPress altyapısı da bu botunları aktif etmek için müsait. Yani fonksiyon dosyanıza ekleyeceğiniz iki – üç satırlık kod ile yatay çizgi düğmesinden metni iki yana yaslama düğmesine, yazı tipi seçim aracından metin arkaplanını renklendirme düğmesine kadar bir çok düğme ve aracı aktif edebilirsiniz. Gelin isterseniz bu işi nasıl yapacağımıza ve hangi düğmeleri aktif edebileceğimize bakalım.

/* = TinyMCE metin editörüne buton ekleme fonksiyonu
--------------------------------------------------------------- */
function extended_editor_mce_buttons($buttons){
array_push($buttons, "anchor", "backcolor", "charmap", "cleanup", "code", "copy", "cut", "fontselect", "fontsizeselect", "hr", "newdocument", "paste", "redo", "styleselect", "sub", "sup", "undo");
return $buttons;
}
add_filter("mce_buttons", "extended_editor_mce_buttons");
/* = TinyMCE metin editörüne buton ekleme fonksiyon sonu
--------------------------------------------------------------- */

Kullanacağımız kod öbeği (fonksiyon kodları) bundan ibaret. Yani bu kodu functions.php dosyasına eklemeniz aşağıda tanımını yapacağım düğmelerin tamamını metin editörünüze eklemenizi sağlıyor. Tabi kullanmak istediğimiz düğmelere göre fonksiyonun içerisinde bir kaç küçük düzenleme yapmamız gerekecek. Yani eklemek istediğimiz düğmeleri bu fonksiyona söylemeliyiz ki fonksiyonumuz hangi düğmeleri metin editörüne eklemesi gerektiğine vakıf olabilsin.

Fonksiyonumuzun 6. satırında yer alan ve array_push ile başlayan bölüm bizim özelleştirme için kullanacağımız bölümdür. Fonksiyonun bu bölümünde yer alan parametrelere baktığımızda biraz İngilizcesi olan ve HTML ile ilgilenenlerin hiç de yabancısı olmadığı ibareler görüyoruz. İsterseniz bu bölümde kullanabileceğimiz parametreleri yani metin editörüne ekleyebileceğimiz bazı düğmeleri ve işlevlerini kısaca açıklayayım.

anchor		: Metninizin içine çapa eklemenizi sağlar. Çapa, metin içinde ID seçicisi ile tanımlanan bölüme gitmeye yarar.
backcolor	: Metninize arkaplan rengi vermenizi sağlar.
charmap		: Metninize istediğiniz özel karakteri eklemenizi sağlar.
cleanup		: Metindeki dağınık kodları temizler.
code		: Editördeki metnin HTML kodlarını gösterir.
copy		: Seçili metni kopyalar.
cut		: Seçili metni keser.
fontselect	: Metniniz için yazı tipi belirlemenizi sağlar.
fontsizeselect	: Metniniz için yazı boyutu belirlemenizi sağlar.
hr		: Yatay çizgi eklemenizi sağlar.
newdocument	: Editör içeriğini temizlemenizi sağlar.
paste		: Hafızadaki metni yapıştırma düğmesi ekler.
redo		: Son yapılan işlemi geri alma düğmesi oluşturur.
styleselect	: Metne veya seçili herhangi bir ögeye tanımlı stillerden atamanızı sağlar.
sub		: Seçili metni / rakamı alt simge haline getirir.
sup		: Seçili metni / rakamı üst simge haline getirir.
undo		: Geri alınan son işlemi iptal etmeyi sağlar.

Artık kullanacağımız tanımlamaların da ne işe yaradığını bildiğimize göre metin editörümüze düğme eklemek için herhangi bir engelimiz kalmadı. Yukarıda yer alan fonksiyonu kullandığınızda açıklamasını yaptığım bütün düğmelerin metin editörünüze eklendiğini göreceksiniz. Siz bu fonksiyondan istemediğiniz düğmelerin kodlarını silebilirsiniz.

Yukarıda verdiğim fonksiyonu kullandığınızda düğmelerin tamamının araç çubuğunun ilk satırına eklendiğini göreceksiniz. İsterseniz kodumuzda bir kaç ufak düzenleme yapalım ve düğmeleri araç çubuğunun satırlarına bölüştürelim. Hatta araç çubuğuna üçüncü bir satır daha ekleyip bazı düğmeleri de bu satırda gösterelim. Bunun için bize gerekli kod ise aşağıda.

/* = TinyMCE metin editörüne buton ekleme fonksiyonu
--------------------------------------------------------------- */
function extended_editor_mce_buttons($buttons){ /* Araç çubuğunun 1. satırına eklenecek düğmeler */
	array_push($buttons, "anchor", "backcolor");
	return $buttons;
}
add_filter("mce_buttons", "extended_editor_mce_buttons");

function extended_editor_mce_buttons2($buttons){ /* Araç çubuğunun 2. satırına eklenecek düğmeler */
	array_push($buttons, "charmap", "cleanup", "code");
	return $buttons;
}
add_filter("mce_buttons_2", "extended_editor_mce_buttons2");

function extended_editor_mce_buttons3() { /* Araç çubuğunun 3. satırına eklenecek düğmeler */
	return array("copy", "cut", "hr", "newdocument", "paste", "redo", "sub", "sup", "undo", "fontselect", "fontsizeselect", "styleselect");
}
add_filter("mce_buttons_3", "extended_editor_mce_buttons3");
/* = Fonksiyon sonu 
--------------------------------------------------------------- */

İşte yukarıdaki kodu fonksiyon dosyamıza eklediğimizde metin editörümüzün alacağı görüntü.

WordPress metin editörünün gizli butonlarını göstermek

WordPress farklı bölümlerde farklı sayıda yazı göstermek

Bazen bir durumu anlatmak için kullanmanız gereken kelime sayısı fazla olmak zorunda olur ya; şu anda ben de aynı durumla karşı karşıyayım. Yazı başlığının, yazıda anlatacağım şeyi tam olarak ifade edip etmediği hakkında kesin bir şey söylemem mümkün değil. Çünkü buna ben de emin değilim. Ve bu durumu tam olarak anlatmak için birkaç cümle kurmak gerekecek ki hemen bu birkaç cümleyi kurayım. WordPress tabanlı sitenizin anasayfasında 6, kategori sayfalarında 8, etiket sayfalarında 10, arama sonuçlarında 12, arşiv sayfalarında da 20 sonuç göstermek istediğinizde bunu nasıl yapacağınız işte tam da bu yazımızın konusu.

Sadece WordPress için değil her soru/sorun için geçerli olan birden fazla cevabın, çözüm yolunun bu durum için de geçerli olduğunu sanırım tahmin etmişsinizdir.

Her bir bölüm için farklı sayıda yazı gösterme işlemini; WordPress’in bize sunduğu esnek kodlama yapısından ve zengin fonksiyon kütüphanesinden yararlanarak da yapabiliriz, bir eklenti yardımı ile de yapabiliriz.

İlk olarak hazır WordPress fonksiyonlarından yararlanarak bu işin nasıl yapılacağını görelim:

Öncelikle kısa bir bilgi tazeleme babında ufak bir liste yapalım ki hangi bölüm temanın hangi dosyası aracılığı ile görüntüleniyor, hatırlamış olalım:

- Anasayfa        = index.php (Bazı temalarda home.php)
- Kategoriler     = archive.php
- Arşivler        = archive.php
- Etiketler       = tag.php (Mevcut değilse archive.php)
- Arama Sonuçları = search.php
- Yazar Sayfaları = author.php

Daha ayrıntılı bilgi için WordPress Tema Hiyerarşisini inceleyebilirsiniz.

Bu kısa ekstra bilgiden sonra dönelim asıl meseleye. Daha anlaşılır olması için iki farklı dosya üzerinde bu işlemin nasıl yapılacağını anlatmak istiyorum.

İlk önce anasayfada göstereceğimiz yazı sayısını ayarlayalım. Temamızın index.php dosyasını açıyor ve döngü (loop) öncesine bir sorgu parametresi ekliyoruz. Kodumuz aşağıdaki gibi oluyor.

query_posts('posts_per_page=5');
if ( have_posts() ) : while ( have_posts() ) : the_post();

Buradaki 5 değeri sayfa başı gösterilecek yazı sayısıdır ve istediğiniz rakamla değiştirebilirsiniz. Bu kadar mı? Tabi ki bu iş bu kadar kolay değil. Yukarıdaki kodu test ettiğinizde anasayfada 5 adet yazının görüntülendiğine şahit olacaksınız fakat önceki sayfalara geçmek istediğinizde yine anasayfanın görüntülendiğini fark edeceksiniz. Bu durumun önüne geçmek için sorgumuzu biraz daha zenginleştirmemiz gerekecek. Böylece önceki sayfalarda yer alan kayıtlar listeleniyorsa sorgumuza ona göre sayfa numarası göndermesini sağlayacağız. Bu parametreleri de ekledikten sonra kodumuz aşağıdaki gibi olacaktır.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('posts_per_page=5&paged='.$paged);
if ( have_posts() ) : while ( have_posts() ) : the_post();

Şimdi önceki sayfalara geçmek istediğinizde eski kayıtlara ulaşabildiğinizi göreceksiniz.

Anasayfa için yapmamız gereken işlem bu kadar. Fakat kategori, etiket, arama veya yazar sayfaları için aynı kodları denediğinizde bir şeylerin eksik olduğuna şahit olacaksınız. Bu eksik olan şey ise sınıflandırma parametresidir ki sorgumuza o parametreyi göndermediğimizde herhangi bir ayrım yapmadan tüm yazılar görüntülenir ve sayfamızın anasayfadan bir farkı kalmaz. O nedenle eğer sorgu filtrelemeyi kategori sayfaları için yapacaksak hangi kategori olduğunu, etiket sayfaları için yapacaksak hangi etiket olduğunu vs. sorgumuza dahil etmemiz gerekiyor. Aşağıdaki kodda kategori sayfaları için gerekli olan kod mevcut. Yine 5 değerini istediğiniz rakamla değiştirebilirsiniz.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=' . $cat . '&posts_per_page=5&paged='.$paged);
if ( have_posts() ) : while ( have_posts() ) : the_post();

Sorguyu siz etiketler, yazarlar, arama ve arşiv sayfaları için çeşitlendirebilirsiniz.

Daha önceki yazılarımda kod tembeli site sahipleri için yaptığım güzelliği bu yazıda da devam ettiriyor ve “Ben bu kadar kodla uğraşamam arkadaş. Armudun pişip ağzıma düşmesini istiyorum.” diyenler için yukarıda yaptığımız onca şeyi ve daha fazlasını yapan bir eklentiyi yazının sonuna ekliyorum. Scott Reilly tarafından yazılan Custom Post Limits isimli eklentinin dil dosyasını Türkçeleştirdim fakat dil dosyasındaki bazı eksikliklerden dolayı eklenti ayarlarının yapıldığı sayfada birkaç bölüm İngilizce. O kadarına da umarım bir şey demezsiniz.

Eklentinin Türkçeleştirilmiş halini aşağıdaki bağlantıdan indirebilir, önizleme resmine de yine aşağıdan ulaşabilirsiniz.

  Custom Post Limits Türkçe (93,8 KiB)

Custom Post Limits Ayarları