Wordpress Özel Alanlarında Arama
Bildiğimiz gibi Wordpress’in özel alanları (custom field) gerçekten de çok faydalıdır. Ne kadar faydalı olduğuna ve nasıl kullanıldığına Her Yazım Resimli Olsun Diyorsanız! başlıklı yazımda değinmiştim. Bu konuyu biraz daha devam ettirmek gerekirse özel alan kullanımının yaygınlaşması sonucu buralardaki verileri arama ihtiyacı doğdu.
Bu ihtiyacı temel anlamda gideren eklenti burada tanıtılan Search Custom Field eklentisi. Fakat bu eklentinin çok büyük bir eksisi var ki o da sadece tek bir özel alanı arayabilmesi. Örneğin arabalarla ilgili bir yazınız var ve aynı anda hem marka hem de model isimli iki özel alanınız var. Bu eklenti ile ikisini birden arayamıyorsunuz. Fakat bunun dışındaki tek alan aramak için gayet kullanışlı bir eklenti.
Gelelim daha geniş kapsamlı birden fazla alanın aranmasına. İşte burada artık ileri seviye programlama işin içine giriyor desem yanılmam sanırım. Wordpress.org forumlarında bu konu çok tartışılmış çünkü yapılması öyle kolay bir olay değil. Herhangi bir Wordpress fonksiyonu bu konuda işinize yaramadığı için kendi veritabanı sorgunuzu yapmanız lazım. Araştırmalarım ve tecrübelerim sonucunda şu SQL cümlersinin sorunsuz bir şekilde çalıştığını gördüm.
<?php $querystr = " SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2 WHERE wposts.ID = wpostmeta.post_id AND wposts.ID = wpostmeta2.post_id AND wpostmeta.meta_key = 'candy' AND wpostmeta.meta_value = '$candy' AND wpostmeta2.meta_key = 'mood' AND wpostmeta2.meta_value = '$mood' AND wposts.post_status = 'publish' AND wposts.post_type = 'post' ORDER BY wposts.post_date DESC "; ?>
Kaynak: http://wordpress.org/support/topic/158228
Sonuç olarak bu konunun ileri seviye programlama bilgisi gerektirdiğini itiraf etmeliyim. Umarım ihtiyacı olanlar bir şekilde programlama bilgisi iyi olan arkadaşlarından (ben değil:) ) destek alarak sorunlarını çözebilirler. Şimdiden kolay gelsin…
Türkçe Compositio Wordpress Teması
Smashing Magazine‘de bugün tanıtılan ve oldukça da hoşuma giden Composito Wordpress temasını Türkçeleştirip sizinle paylaşmak istedim. Özellikle kullanılan mavi tonları gerçekten çok hoş. Belki başlıkların biraz büyük olması sizi rahatsız edebilir ama onu da style.css dosyasından kolayca küçültebilirsiniz.

Compositio temasının tarafımdan Türkçeleştirilmiş halini ve test etme fırsatını Farklı Bir Galeri‘de bulabilirsiniz. Bir hatayla karşılaşırsanız lütfen bildiriniz.
Türkçe Wordpress 960 Pixel Teması
Hakan Demiray tarafından Türkçeleştirilen Wordpress 960 Pixel isimli bu güzel tema Farklı Bir Galeri‘ye girmeyi fazlasıyla hakediyor. Compositio gibi mavi tonlarındaki temanın kendine özgü bir havası var. Özellikle reklam alanları çok güzel yerleştirilmiş. Hakan’a bu güzel çalışması nedeniyle teşekkür ediyor ve sizi tema ile başbaşa bırakıyorum.

960 Pixel temasının Türkçeleştirilmiş sürümünü ve test etme fırsatını Farklı Bir Galeri‘de bulabilirsiniz. Bir hatayla karşılaşırsanız lütfen bildiriniz.
Umut Avcı | CG-Artist
Umut Avcı, 2D ve 3D çizim yapan bir başarılı bir grafiker, kendi deyimleriyle CG-Artist. Yakın dostum olan Umut’un sitesini geçenlerde bir iki eksiği (standartlara uydurmak ve iletişim bölümü) dışında birlikte tamamladık. Çizmiş olduğu tasarımı Wordpress’e uyarladıktan ve istediği işlevleri sağladıktan sonra site hazır hale geldi. Tam olarak bitmesini bekleyemeden içime en çok sinen çalışmalarımdan birisi olan bu siteyi size tanıtmak istiyorum.
Bu projede öncelikle kendimize birkaç hedef belirledik.
- Bu site hem bir portfolio sitesi hem de bir günlük olacaktı.
- Çalışmaları listelerken yazılardan çok resimlere yani çalışmaların önizlemelerine ağırlık verecektik.
- Bir sayfada olabildiğince fazla içerik gösterecek ve bir yandan bunu yaparken sayfanın aşağı doğru normal günlükler gibi uzamasını engelleyecektik.
Yukarıda saydıklarım hedeflerimizden en önemlileriydi ve başarılı olduğumuza inanıyorum.

Sitenin anasayfasının görüntüsüne yukarıdaki resme tıklayarak ulaşabilirsiniz.
Bu siteyi hazırlarken öncelikli amacımız bir günlük gibi aşağı doğru uzaması değil, bir portfolio sitesi gibi belirli bir alanda olabildiğince içerik ve çalışma göstermekti. Anasayfaya baktığınızda hem çalışma kategorilerinden hem de günlük yazılarından başlıklar görebilirsiniz. Bu şekilde Wordpress’te birden fazla kategoriden veriyi çekmek için WP_Query‘den sonuna kadar faydalandım.

Çalışmalardan herhangi bir kategoriye tıkladığınızda yukarıdaki gibi çalışmaların ufak resimlerinin olduğu sayfalar karşınıza çıkacaktır. Gördüğünüz gibi arkaplanı koyu renkli tutarak çalışmaları önplana çıkardık. Tabi bilgileri görüntülerken çalışmanın detayından çok resmin görünmesini istedik. Bunu da Her Yazım Resimli Olsun Diyorsanız! başlıklı makalemde anlattığım özel alanlar vasıtasıyla yaptım.

Gördüğünüz gibi bir çalışmaya tıklandığında o çalışmanın büyük resmi ve detayları çıkmakta. Resme tıkladığınız anda ise güzel bir efekt ile resim gerçek boyutlarında görüntülenmektedir.
Not: Ben hâlâ yukarıdaki resmin bir fotoğraf olduğunu iddia etsem de 3D çizim olduğunu söylüyor Umut. tabiî bendeki programcı gözü, nasıl isterse öyle görür
Sitenin her yerinde özenle durduk. Keşke hepsini gösterme gibi bir şansım olsa ama o zaman bu yazıyı bitiremem sanırım. Eğer gösterecek olsaydım Hakkımda sayfasındaki orjinal Özgeçmiş (CV) çalışmasını, günlük yazılarının nasıl listelendiğini ve nasıl göründüğünü de göstermek isterdim.
Güzel bir şey daha duymak isterseniz Umut sitesinde bilgilerini makale şeklinde de yazmayı planlıyor, kaçırmayın derim.
Wordpress bilgimi sonuna kadar kullandığım bu projenin asıl sahibi Umut Avcı‘yı tanımak ve çalışmalarını görmek için beklemenize gerek yok, sizi şöyle alayım…
Umut AVCI | CG-Artist – www.umutavci.com
Worpdress’te Oturum Yönetimi (SESSION)
Üzerinde çalıştığım son projede hazırlamış olduğum temayı oturum yönetimiyle yani SESSION evrensel değişkenleriyle güçlendirdim. Fakat şöyle bir sorunla karşılaştım. Wordpress kullandığım evrensel değişkeni ($_SESSION[]) her seferinde sıfırlıyordu. Bende ufak bir düzenlemeyle bu sıfırlama işlemini kapattım. Eğer kodlarınızı yazarken yeterli güvenlik önlemlerini aldıysanız yazının devamında göstereceğim yamayı kullanarak Wordpress temalarında PHP programlama dilinin oturum yönetimi tekniğini kullanabilirsiniz.
$_SESSION[] değişkeninin sıfırlamasını kapatmak için Wordpress ana dizinindeki wp-settings.php dosyasını açın ve şu satırı bulun.
$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
Yukarıda bulduğunuz satırı aşağıda verdiğim kodla değiştirin.
$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES);
Bu ufak düzenlemeden sonra artık Wordpress, evrensel oturum yönetimi değişkenlerinizi sıfırlamayacaktır.
Türkçe Wordpress Irresistible Teması
WooThemes‘ten mükemmel bir tema ücretsiz olarak Wordpress dünyasına sunuldu. İlk görüşte arşive alınası, Farklı Bir Galeri‘ye eklenesi bir tema dedim içimden. Bununla birlikte gelen e-postalarda da bu temayı Türkçeleştirmem konusunda istekler de vardı.
Yazının devamında temanın genel bir resmini bulacaksınız fakat aslında tema çok daha derin. İçinde tam 9 adet farklı renk düzeni bulunuyor. Bununla birlikte Flickr’dan çektiği fotoğraflar ve videolar için özellikle yapılmış alanlar da uygun bir şekilde düzenlenirse gerçekten tadından yenmez bir tema olur.
Önizleme

Bu mükemmel temanın tarafımdan Türkçeleştirilmiş sürümünü Farklı Bir Galeri‘de bulabilirsiniz. Bir hatam varsa da iletmekten çekinmeyiniz.
Bu arada tema özellik arzettiği için tam anlamıyla bir test imkanı sunamıyorum fakat şurada orjinal test alınında temanın gerçek gücünü görebilirsiniz.
Wordpress SQL Cümleleri
Wordpress için kod yazan geliştirici arkadaşlara faydası olması amacıyla bu zamana kadar kullandığım Wordpress SQL cümlelerini bir araya getirerek yayınlamaya karar verdim. Bazen Wordpress’in standart kodları ihtiyacınızı karşılamadığı benim yaptığım gibi veritabanına direk müdahalelere mecbur kalabiliyorsunuz. İşte böyle durumlarda bu SQL cümleleri hayatınızı ve üzerinde çalıştığınız projeyi kurtarabilir ![]()
Kategoriye Göre En Çok Okunanlar
En güzel cümle ile başlamak istedim. Bildiğiniz gibi hangi yazının kaç kez okunduğunu öğrenmek için tüm dünyada en çok kullanılan eklentilerden birisi Hakan Demiray‘ın Sayfa Sayaç eklentisidir. Bu eklenti ile sitenizde en çok okunan yazıları da gösterebilirsiniz. Son çalıştığım projede benden görüntülenen yazının bulunduğu kategorideki en çok okunanları listelemem istendi. Bende bunun üzerine Hakan’ın eklentisine ufak bir yama yaptım. Yama ile beraber artık ID’sini belirttiğim kategorideki en çok okunanları seçebiliyorum. Bunu buradan yayınlayarak Hakan’a da eklentiyi güncellemesi konusunda bir fikir verebilirsem ne mutlu bana
$tp = $wpdb->prefix;
$SQL = "SELECT *
FROM {$tp}posts, {$tp}posts_okunma, {$tp}term_relationships, {$tp}term_taxonomy
WHERE {$tp}posts.ID = {$tp}term_relationships.object_id
AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id
AND {$tp}term_taxonomy.taxonomy = 'category'
AND {$tp}term_taxonomy.term_id = '{$kat}'
AND {$tp}posts.ID = {$tp}posts_okunma.postID
AND post_status = 'publish'
AND post_type = 'post'
ORDER BY {$tp}posts_okunma.sayac_toplam
DESC LIMIT 0, $limit";
En Çok Yorumlananlar
Aşağıdaki kod ile en çok yorumlanan yazıları çekebilirsiniz.
$cokyorumalan = "SELECT $wpdb->posts.ID, post_title, post_name, post_date, COUNT($wpdb->comments.comment_post_ID) AS 'comment_total' FROM $wpdb->posts LEFT JOIN $wpdb->comments ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID WHERE comment_approved = '1' AND post_date_gmt < '".gmdate("Y-m-d H:i:s")."' AND post_status = 'publish' AND post_password = '' GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_total DESC LIMIT $limit";
Kategorinin Yazıları
Belirli bir kategorinin yazılarını çekmek istiyorsanız aşağıdaki sorguyu kullanabilirsiniz. $kat değişkeni ilgili kategorinin ID’sidir.
$tp = $wpdb->prefix;
$yazisorgusu = "SELECT ID, {$tp}term_taxonomy.term_id as category_id, id AS post_id
FROM {$tp}posts, {$tp}term_relationships, {$tp}term_taxonomy
WHERE {$tp}posts.ID = {$tp}term_relationships.object_id
AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id
AND {$tp}term_taxonomy.taxonomy = 'category'
AND {$tp}term_taxonomy.term_id = '".$kat."'
AND post_status = 'publish'
AND post_type = 'post'
ORDER BY id DESC LIMIT 0, $limit";
Özel Alanda Arama
Wordpress’in oldukça faydalı bir yanı da özel alanlarıdır. Bu özel alanlardan sadece birinde aşağıdaki kod ile arama yapabilirsiniz.
$querystr = " SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'candy' AND wpostmeta.meta_value = '$candy' AND wposts.post_status = 'publish' AND wposts.post_type = 'post' ORDER BY wposts.post_date DESC ";
Birden Çok Özel Alanda Arama
Daha önce şurada bahsetmiştim ama konusu gelmişken buraya da yazmanın bir sakıncası olmaz sanırım.
$querystr = " SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2 WHERE wposts.ID = wpostmeta.post_id AND wposts.ID = wpostmeta2.post_id AND wpostmeta.meta_key = 'candy' AND wpostmeta.meta_value = '$candy' AND wpostmeta2.meta_key = 'mood' AND wpostmeta2.meta_value = '$mood' AND wposts.post_status = 'publish' AND wposts.post_type = 'post' ORDER BY wposts.post_date DESC ";
Sizin de bildiğiniz güzel cümleler varsa ve iletirseniz bu arşivi genişletebiliriz.
Wordpress’te Her Kategoride Farklı Resim
Sitemdeki yazıların bazıları okuyucularımdan aldığım fikirler sonucu ürettiğim çözümlerden oluşuyor. Yine böyle bir fikir geldi bu akşam. Nasıl Wordpress’te her kategoride farklı resim görüntülenmesini sağlayabiliriz? İşte bu soru üzerine basit ama etkili bir teknik geldi aklıma.
İlgili Kod
<?php $category = get_the_category(); ?>
<img src="<?php bloginfo('template_url'); ?>/images/<?php echo $category[0]->category_nicename; ?>.jpg" />
Yukarıdaki kodun açıklaması şöyle;
- Öncelikle mevcut kategori bulunur,
- Kategorinin güzel ismi (nicename) alınır ($category[0]->category_nicename),
- Bu güzel isim ve sonuna .jpg eklenerek tamamlanan resim temanın images klasöründen çağırılır.
Kullanımı
Öncelikle güzel ismin (nicename) ne demek olduğunun bilinmesi gerekir. Güzel isim kategori isminin Türkçe ve adres satırı için uygunsuz karakterlerden arındırılmış şekline denir. Örneğin Site Eleştirileri kategorisinin güzel ismi site-elestirileri‘dir.
Sitenizdeki her kategori için bir resim hazırlayın ve bu resimlerin isimlerini ilgili kategorinin güzel ismininin sonuna .jpg eklenmiş olarak değiştirin (site-elestirileri.jpg). Kategoriler için resimleri uygun şekilde adlandırdıktan sonra bu resimleri temanızdaki images klasörüne yükleyin.
Artık yukarıda verdiğim kodu sitenize yerleştirdiğiniz zaman o an görüntülenen kategori için hazırladığınız resim görünür. Bu arada malum çözüm en sağlıklı şekilde bir kategoriye veya bir yazıya tıklandığında çalışır. Kodu gerekirse ona göre is_single() vb. kodlarla sadece tek yazı görünümünde veya kategori görüntülenirken çalıştırabilirsiniz. is_home() dediğinizde de anasayfada görünmesini istediğiniz resmi çağırırsınız. Eksik ama yine de örnek olması açısından şöyle bir kodu kullanabilirsiniz.
<?php if(is_home()){ ?>
<!-- Anasayfada gösterilecek resim kodu -->
<img src="<?php bloginfo('template_url'); ?>/images/resim.jpg" />
<?php } else {
$category = get_the_category(); ?>
<img src="<?php bloginfo('template_url'); ?>/images/<?php echo $category[0]->category_nicename; ?>.jpg" />
<?php } ?>
Not: is_home, is_single gibi koşullar hakkında daha detaylı bilgiye şuradaki makaleye bakabilirsiniz.
Wordpress the_excerpt() Fonksiyonu
Wordpress tema fonksiyonlarından birisi de the_excerpt() fonksiyonudur. Bu fonksiyonu kısaca şöyle özetleyeyim. Diyelim ki anasayfada yazılarınızın özetini göstermek istiyorsunuz. Bunun için genelde farklı parametrelerle the_content() fonksiyonu kullanılır. Eğer yazınızı < !–more– > etiketi ile bölmüşseniz bu etikete kadar olan kısım anasayfada görüntülenir. Fakat bazen
< !–more– > etiketini kullanmak istemeyiz. Sadece yazının belirli bir kelime kadar olan kısmı anasayfada özet şeklinde görünsün isteriz. Çünkü more etiketini yazının neresine koyacağımızı kestirmek zor olabiliyor. Yanlış bir yere koyarsak tasarımı bozma ihtimali doğuyor. İşte böyle durumlarda yazının belli bir kelimeye kadar olan kısmının anasayfada özet şeklinde görünmesi için the_excerpt() fonksiyonu daha kullanışlı olacaktır.
the_excerpt() Kullanımı
Bu fonksiyonun tek bir kullanımı vardır ki o da şu şekildedir (55 kelime olduğunu varsayın):
<?php
the_excerpt();
?>
Yukarıdaki fonksiyon yazınızın ilk 55 kelimesini alır, sonuna [...] ekler ve görüntüler. Örnek bir çıktı şu şekildedir.
Büyüklük odur ki kimseye iltifat etmeyeceksin, hiç kimseyi aldatmayacaksın. Memleket için gerçek ülkü ne ise onu görecek ve o hedefe yürüyeceksin. Herkes senin aleyhinde bulunacaktır, seni yoldan çevirmeye[...]
Eğer kelime sayısını (55 değil de 45 mesela) değiştirmek veya en sondaki [...] yerine farklı bir şeyler yazdırmak isterseniz yapmanız gereken wp-includes/formatting.php dosyasını açıp Wordpress 2.7.1′de 1482′nci satırda olan şu fonksiyonu bulmak.
function wp_trim_excerpt($text) {
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = apply_filters('excerpt_length', 55);
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '[...]');
$text = implode(' ', $words);
}
}
return $text;
}
Buradaki 55 sayısı yerine dilediğiniz rakamı ve [...] yerine de dilediğiniz karakterleri yazıp kaydederseniz artık yazılarınızın özeti dilediğiniz gibi görünecektir.
Not: Bu işlemleri yapmak yerine Custom Excerpts eklentisini de kullanabilirsiniz.
Biraz zor anlattım bu konuyu çünkü kimin olabildiğince herkese hitap etmek isterken daha basite indirgeyemiyorum konuyu. Umarım anlatabilmişimdir. Güle güle faydalanın.
Veblogu, Wordpress MU ve BuddyPress Üzerine
Her geçen gün günlüklerin ne kadar yayıldığına bir kez daha şahit oluyor ve günlük yazmaya başlamadaki hızlı artışı heyecanla takip ediyoruz. Tabiî ki güzel bir şey bu fakat aslında bundan daha güzel bir şey var ki o da bir güzel bir günlük sahibi olmanın artık gerçekten kolaylaştığı. Buna en güzel örnek şüphesiz ki Veblogu | Yontma Taş Ücretsiz Blog Servisi.
Veblogu sadece ücretsiz günlük dağıtan bir site değil. Bununla birlikte gayet güzel tasarlanmış ve insanları (özellikle de günlük yazarlarını) birbirine yakınlaştırmayı amaçlayan sosyal bir platform. Piyasaya bu güçlü çıkışının arkasında ise 3 önemli faktör var.
Wordpress MU
İlk faktör bedava günlük dağıtma sistemi olan Wordpress MU. Bu altyapı sayesinde insanlara bedava günlük sahip olma fırsatı verebilir ve üyelerinizin koymuş olduğunuz temalardan istediğini kullanmasını sağlayabilirsiniz. Üyelik işleminin basit olması ve sistemin kendi kendine idare edebilmesi gerçekten de yöneticileri büyük bir dertten kurtarıyor. Ayrıca Wordpress MU kullanımının artmasıyla bu altyapı için gelişitirilen eklenti sayısında da ciddi bir artış var. Böylece olası birçok soruna çözüm bulabiliyorsunuz
BuddyPress
Wordpress MU bedava günlük dağıtmak için yeterli bir sistem fakat bunu zenginleştirmek ve sosyal bir platform haline getirmek yine bu sistem için yazılmış olan BuddyPress eklentisinin görevi. Bu eklenti sayesinde bir anda günlükleri değil de sistemin temelini ilgi odağı haline getirebilirsiniz. Üyelerinize forumlarda tartışma imkanı sunabilir, günlüklerdeki son yazıların tek bir yerde görüntülenmesini sağlayabilirsiniz. Bununla birlikte günlüklerden ziyade günlük sahiplerini ön plana çıkarmanın da gayet güzel bir yolu.
Yönetim Kadrosu
Wordpress MU ve BuddyPress her ne kadar oldukça güçlü sistemler olsalar da yanlarında sıkıntılarıyla birlikte gelirler. Özellikle zor ve sıkıntılı bir kurulum aşaması, yetersiz Türkçe dil desteği, sabit bir tasarımları olması, ihtiyaca göre eklentinin bulunamama ihtimali gibi… İşte bu sorunları aşmak ve kaliteli hizmet vermek için bahsettiğim 3 faktörden en önemlisi Yönetim Kadrosu‘dur. Veblogu gördüğüm kadarıyla kaliteli bir tasarımcının ve sağlam bir takımın işi.
Sonuç
Böyle güzel bir servis ortaya çıktıktan sonra insanları günlük tutmak için daha rahat ikna edebileceğimizi düşünüyorum. Ne de olsa artık günlükler çok daha alımlı, yazmaya başlamak çok daha kolay.
Çalışmalarından dolayı Veblogu ekibine teşekkür eder, yayın hayatlarında başarılar dilerim.




