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ı

WordPress manşet eklentisi Cu3er Post Elements

Defterimin taslaklar bölümüne göz attığımda, Stefan Kovac tarafından oluşturulan ve kullanımı oldukça kolay olan flash manşet uygulaması Cu3er hakkında ayrıntılı bir yazı yazacağıma dair çok öncelerden eklediğim taslağı gördüm. Düşüncem, Cu3er’in nasıl bağımsız olarak uygulanacağını anlatıp birkaç tane de örnek yayınlamaktı. Fakat 24 saatin yetmezliği bu düşünceme de sirayet etti ve bir türlü bu isteğimi gerçekleştiremedim. Hal böyle oldu diye bu isteğimden hepten vazgeçmek yerine “Bari daha tembel işi de olsa Cu3er ile ilgili birşey yapayım” dedim ve Cu3er ile hazırlanmış bir WordPress manşet eklentisi olan Cu3er Post Elements’i hem tanıtıp hem de Türkçeleştirme kararı aldım.

Cu3er Post Elements, Cu3er uygulamasının bütün esnekliğine sahip bir WordPress eklentisi. Seçtiğiniz kategoriye / kategorilere ait yazıların içindeki resimleri manşet resmi olarak gösteren eklentiyi sitenizde kullanabilmek için birkaç basit adımı takip etmeniz gerekiyor. Sırasıyla bu adımları aşağıda listeliyorum:

1. İster Türkçe, ister orijinal dilinde aşağıdaki bağlantılardan kaydettiğiniz eklenti dosyasında yer alan cu3er-post-elements klasörünü sitenizin eklenti dizini olan wp-content/plugins/ dizinine yükleyin.

2. Sitenizin yönetim panelinden eklentiyi aktif ettikten sonra Ayarlar -> Cu3er Elements bağlantısını takip ederek Cu3er Post Elements Ayarları sayfasına gelip gerekli ayarları yapın.

Her ne kadar ayarlar sayfasında gerekli açıklamalar varsa da dikkat etmeniz gereken birkaç noktaya değinmek istiyorum:
– KATEGORI ID’LERI bölümüne bir veya birden çok kategori ID’si girebilirsiniz. Bu bölüme girmeniz gereken kategori ID numaralarını bulmak için Yönetim Paneli menüsünden Yazılar -> Kategoriler bağlantısını takip edip ID numarasını öğrenmek istediğiniz kategoriyi düzenleme sayfasına gelin. Adres satırında wp-admin/categories.php?action=edit&cat_ID=4 şeklinde bir adres olur. 4, bu kategorinin ID numarasıdır. Birden çok kategorinin yazılarını Cu3er uygulamasında göstermek isterseniz numaraları virgül ile 4,5 şeklinde ayırın.
– CU3ER GENIŞLIK ve CU3ER YÜKSEKLIK bölümlerine manşetinizin ebatlarını piksel cinsinden girmelisiniz.
– Zaman Sayacı Ayarları ve Başlık Ayarları bölümlerine gireceğiniz değerleri manşet boyutunuza göre belirlemelisiniz ki; hem zaman sayacı hem de başlık, manşetinizin istediğiniz yerine gelsin.
– Manşet uygulamasının üstünde bulunan ve bir önceki / bir sonraki manşete geçmeye yarayan okları eklentiyle beraber gelen birbirinden farklı oklardan seçebilirsiniz. Bunun için CU3ER OK TIPI bölümünde (Kullanılabilecekleri göster) metninin üzerine geldiğinizde görünecek olan 10 adet ok tipinden beğendiğinizin altındaki numarayı ilgili alana girmeniz yeterli.
3. Son olarak da flash manşetin görünmesini istediğiniz yere (Muhtemelen anasayfanızda görünmesini istersiniz. Eğer öyleyse temanızın index.php dosyasının uygun bir yerine) aşağıdaki kodu ekleyin.

if ( function_exists('install_cu3er') ) { install_cu3er(); }

Son olarak bana lazım olduğu için belki lazım olur düşüncesiyle bir ufak tüyo da vereyim:
Eğer manşet bölümünde görünmesini istediğiniz resimleri yazıya Özel Alan olarak eklemek isterseniz eklentinin config.php dosyasında küçük bir düzenleme yapmanız gerekiyor. Önce config.php dosyasının 76. satırında bulunan

preg_match_all( '||i', $post->post_content, $m );

satırını ister silin, ister önüne // koyup pasifize edin. Ardından

if( $m[ 1 ] ) $xml .= '' . $m[ 1 ][ 0 ] . '';

kodunun yerine aşağıdaki kodu ekleyin.

$xml .= '' . get_post_meta($post->ID, "cu3er", true) . '';

Artık manşetinizde, cu3er ismiyle tanımladığınız özel alana girdiğiniz resimler görüntülenecek.

Eklenti dosyalarının ister Türkçeleştirilmiş halini, ister orijinalini aşağıdaki bağlantılardan temin edebilirsiniz.

  Cu3er Post Elements 0.5.1 Türkçe (174,2 KiB)

  Cu3er Post Elements 0.5.1 İngilizce (251,9 KiB)

Cu3er flash manşet
Cu3er flash manşet