Kategoriler
Php uygulamalari Wordpress faydalı kodlar

PHP | WordPress sitelerinize otomatik yazi gonderin!

Yakin zamanda kullandigim wordpress.com daki bloguma otomatik olarak kendi sunucum uzerinden yazi gonderme uygulamasini paylasmak istiyorum. Uygulamaya yine internet uzerinden denk geldim, kullandim, biraz duzenledim ve yayinliyorum, umarim sizlerinde isini gorecek duzeydedir.

Dosyalar uzerinde cok fazla guvenlik onlemi bulunmamaktadir, bu sebeple kullanacak arkadas kodlari incelerse iyi olacaktir yada baskalarinin bilmedigi bir alanda kullanin, boylece guvenlik derdinizde olmaz, cunku sadece siz kullaniyor olacaksiniz.

Dosyalari indirmek icin buradaki baglantiyi tiklamaniz yeterli. At calistir bir uygulamadir arkadaslar, yani host yada sunucunuza yukleyin, sonrada wordpress.php dosyasini tarayiciniz ile calistirin, karsiniza bir form cikacak bu form da gerekli bilgileri girerek gonderin. sonuc yaziniz basarili bir sekilde gitmistir olacaktir, kesin :D Yetenekli php yazilimcilari bu uygulamayi formsuz, otomatik ve sitelerindeki yazilari paylasmak icin kullanabilirler :)

Kategoriler
Wordpress faydalı kodlar

WordPress cache uygulamasi (eklenti degil) – CPU, ve kasilma sorunlari olanlar icin!

Bir arkadas bana wordpress konusunda sorunlari oldugundan ve nasil bunu asacagini sordu. Bende bir cok etken var, konuya ve eldeki malzemeye gore bu liste uzar, yapilacaklar artar yada azali dedim. Sonrasinda bana r10 sitesinde bir konu gosterdi ve nasil oluyor dedi. Tam emin degilim ancak satisi gerceklestiren arkadas file cache ornegini kullaniyor. Benim cok cok onceleri kendi temalarimda da kullandigim bir teknik.

DEMO: ornek uygulanmis bir websitesi

Buraya tiklayarak dosyalari indirebilirsiniz.

Basit bir yontem, genelde tema tasarimcilari file cache uygulamasini tema dosyalarina uygular, ancak bunun tek getirisi an sayfadaki sorgu icin olacaktir. O sorguya gelene kadar wordpress 100 e yakin sorgu yapabilir + eklenti ve temaya gore bu sorgu sayisi dahada cok artiyor.

File cache uygulamasini tema dosyasina uygulamak yerine wordpress’in index.php dosyasi uzerine uygulamaniz daha mantikli olacaktir. Cunku cache alinan sayfa bilgileri, sonraki cagrilisinda 0 sorgu ile ekrana basilacagi icin kusursuz bir 100% hiz elde etmis olacaksiniz.

Bu arkadas, yaninda bu sorundan muzdarip diger arkadaslara hitaben kucuk bir kod yazdim index.php icin ve giris dosyasinada ufak bir edit yaptim.

Normalde file cache uygulanan bir sayfada admin yada kullanici girisi olsa dahi ilk cache alindigi hali gorunecektir. Bunun olumsuz tarafi cok olacaktir. Yorum yapamam, yeni yorumlari gorememe, yada diger gorsel ve anlik iletisimde bulunan eklentilerin verilerinde aksakliklar gibi. Ben bu hazirladigim index.php dosyasi kullanici giris yapmis ise cache ozelligini uygulamiyor, eger misafir ise yani giris yapmamis ise cache aliyor yada zamani dolmamis ise onceki kaydi gosteriyor.

Konu goruntuleme eklentisi kullaniyorsaniz eger javascript ile bunu yapan bir uygulama secmenizi oneririm, aksi taktirde giris yapmayan kullanicilar konularinizin okunmasina etki etmeyecektir. Bir sonraki versiyonda bu konuda da bir calisma yapabilirim isterseniz :)

KURULU

Kaynak dosyalarini konu altindan indirebilirsiniz arkadaslar, tek yapmaniz gereken wordpress kurulu sitenizin ana dizinine atmaniz. Uzerine yazsin secenegi cikarsa evet diyin. (Bunun oncesinde dosyalarinizi yedek alabilirsiniz) Yedek almaniza gerek olmayabilir, cunku olumcul degisiklikler yapmadim dosyalarda :) sisteminize herhangi bir hata vermeyecektir.

Bu mod hazirlanirken buradaki degisken file cache alanindan kopya cektigimide hatirlatirim :)

Dosyalar wordpress son versiyon 3.9.1 icindir, ancak eski versiyonlarda da sorunsuz ve hatasiz calisacaktir, cunku dedigim gibi herhangi bir olumcul degisiklik yapmadim.

Buraya tiklayarak dosyalari indirebilirsiniz.

R10 sitesinde satis konusu bulunan arkadas umarim bu konudan etkilenmez, kendisinin isine engel olmak icin bu konuyu acmiyorum, yardim isteyen bir arkadasa, onun nezdinde de ihtiyaci olanlara yardimci olmaktir amacim. Zira kendi uygulamasi burdakinden gelismis de olabilir :) Satin alacak arkadaslar bu konu sadece yardimci olmak amacindadir, ilgili arkadas ilede ticaret yapmaniz uygun olabilir sizin acinizdan.

NOT: Detayli bir anlatim yapma geregi dumadim, duzenlemenin ilk versiyonudur, zamanim olursa gelistirebilirim, farkli ozellikler ekleyebilirim. Bu kullanici geri bildirimine bagli olarak daha once yada daha sonra sureleri ile sinirli olabilir :)

Kategoriler
Aklımdan geçenler Deneme Yazıları Hayat üzerine Kaybettiklerimiz! Sevgi ve Ask Dünyası Wordpress faydalı kodlar

Elveda

Elveda ..
Ağır bir kelime. Geçmişi silmek demektir. Bir dahası olmayacak demektir. Gidiştir. Tek yönlü olan. Her adımında gözleri dolduran, kalbi acıtan.
Elveda diyen umudu keser mi? Ya hala seviyorsa? Elveda bir başlangıçtır, onsuz bir hayata başlangıç.
Bakmaya kıyamazsın, geceleri uyuyamazsın, uğruna neler yapmazsın ki.. Belki adına bir beste. Belki de yalnızca bir şiir. Peki bütün bunlar bir elvedaya sığar mı? O kadar mı büyük bir kelime bu? Yok mu bir çıkarı?
..Hayır yok. Elveda bir dönümdür. Bir köşeyi döndüğünde arkana istediğin kadar bak, göremezsin. Ama bu o yolu unuttuğun anlamına gelmez.
Kalbin girişi tek kullanımlıktır. Bir dahası yoktur ve içerisi de tek kişiliktir. Elveda silgisi o ismi silemez. O mutlaka ordadır.
Gidersin ama orda olduğundan eminsindir. Aşk bu vazgeçilmez ki. Unutulmazda.. Unutmak diye bir şey yoktur aslında. Alışmak vardır. İnsan güçlü varlıktır. Bu kocaman elvedayı bile avcuna alabilir.
İnsan özgürdür. Mecbur değildir, tutsak değildir, köle değildir. İslam çerçevesinde insan, özgürdür. Hür doğmuştur insan, elbet hür ölecektir. Belki bedenin tutsaktır. Ama hiç kimse senin kalbini durduramaz, ruhunu durduramaz. Aşktır tutsak eden. Bir elvedaya boyun eğemezsin…
Yeter ki güçlü ol. İnan, yolundan dönme, sabr ve dua halinde ol. Ve bütün kalbinle iste Yaradan’dan. ‘Bana dua edin size karşılık vereyim’ buyuruyor Rabb. ‘La tahzen innallahe meassabirin’ diyor Rabb. Hala üzülüyor musun? Meraklanma;
Kalbin kadar büyük değil bir elveda kelimesi ..

Kategoriler
Wordpress faydalı kodlar

WordPress admin paneli fonksiyonları – Geliştiriciler için!

WordPress admin panelinde işlem yapmak için kullanabileceğiniz ve yararlanabileceğiniz fonksiyonları bir araya getirmeye çalıştım. Böylece bir çok konuda elinizin altında bir alet çantası olmuş olacak arkadaşlar. İşiniz düştükçe girip bakabileceğiniz bu dokumanı uzun zamandan beri yazmak istiyordum ama zaman bulamıyordum. Şimdi ise tam zamanı…

Kategoriler
Wordpress faydalı kodlar

WordPress önizleme resmi ekleme (Tek kod, 4 yöntem, Otomatik)

WordPress konusunda bayağı uzun zamandır çalışmalar yapıyorum. Ciddi anlamda çok fazla çalışmasamda ihtiyacım olduğunda yada arada bir hobi amaçlı iş çıkartıyorum. Bazen bu durumlarda elinizin altında devamlı kullanabileceğiniz kodlar yada alet çantaları ararsınız. Bunlardan en önemlilerini bloğumda toparlamaya çalışıyorum zaman buldukça..

Şimdi ise potansiyel bir müşterimin konu içindeki resmi önizleme resmi olarak almasını istemiş, sattığım bir temanın (WordPress KuazaHaber proNews 3.0). Bu versiyonda ve daha öncekilerde kullandığım kod mantığını geliştirerek her konuda kullanılabilir bir fonksiyon ortaya çıkardım. Bu sayede önizleme resmi ekleyeceğiniz yere sadece bir php kodu eklemeniz yeterli. Fonksiyonumuz, sistemi tarayarak 4 farklı sorgu ile resim kontrolü yapacak…

Kategoriler
Wordpress faydalı kodlar

WordPress – Kategorideki yazı sayısını bulma!

wordpress-kategori-sayısını-bulmaWordPress de bir kategorideki yazıların sayısını göstermek isteyebilirsiniz. İlerde projelerimde de lazım olabilecek bir uygulama olduğu ve başka arayanlar olabileceği için paylaşmakta yarar görüyorum: Aşağıdaki kodu temanızın içindeki functions.php dosyasında uygun bir yere yapıştırın ve içindeki örnek koduda temanızın herhangi bir dosyasına ekleyerek test edebilirsiniz.

Kategoriler
Wordpress faydalı kodlar

WordPress yazılarınızı sadece yazanlar yada adminler görebilsin!

WordPress çok güzel ve güçlü bir sistem geliştirilebilmeside o kadar esnek. Biraz mantıkla herşeyi yapabilirsiniz. Bir forumda karşılaştığım soruya fonksiyonel şekilde yardımcı olmak için bir kaç kod parçacığı hazırladım.

Soru: Yazıları sadece yazan yazarların görebilmesi

Şimdi ben bu kurala birde adminlerin görebilmesini ekledim böylece yazılarınızı sadece yazarlar ve adminler görebilecek. Böylece yazılarınız için farklı kurallarda ekleyebileceksiniz. Ben kodu sadece single yani tekil yazı sayfasında çalışabilecek şekilde ayarladım. Bu kurala göre sitenin her yerinde görünecek yazınız okuma sayfasında bizim koyacağımız kurallara takılacak. Yazar olması, admin olması, v.s gibi…

Kategoriler
Wordpress faydalı kodlar

WordPress yazılarınızı sadece üye olanlar görsün!

WordPress de bazen yazılarınızı sadece üyelerinize görünür kılmak isteyebilirsiniz. Bir önceki yazımda gelen yoruma binayen yardımcı olacağını düşündüğüm için yazıyorum.

Konu: Yazılarınızı üye girişi yapan kişiler görsün – Ziyaretçi yada üye olmayanlar konularınızı okuyamazlar.

Kategoriler
Wordpress faydalı kodlar

WordPress SQL cache uygulamasi – YENI

Daha once burada paylastigim uygulamanin daha basit, daha hizli ve stabil versiyonunu paylasacagim arkadaslar. Aslinda bunu daha once yazmayi dusunuyordum ancak yogun is temposu, yorgunluk, yogunluk v.s derken epey bir gecikmeme neden oldu.

Bu uygulamanin faydalarindan bahsedeyim biraz:
File cache uygulamalarindan daha iyidir.
Mysql ile cache tuttugumuz icin daha verimli ve daha hizlidir.
sisteminizdeki yuksek sorgulu alanlari hedef aldigimiz icin sorgu sayisinda buyuk bir dusus gosterir.
500 sorguyu 2 sorguya indirgeyebilir, sitenin hizini salise bazina kadar cekebilir.
kullanmazi, ozellestirilebilmesi kolaydir.

Daha onceki yazimda wordpress in options tablosunu kullanarak cache ye alacagimiz alandaki bilgileri yedekliyorduk. Ancak bu sefer uygulama alanindaki fonksiyonumuzu degistiriyoruz ve wordpress in bu ise uygun diger bir fonksiyonunu kullaniyoruz: get_transient

Bu seferki kod kalibimiz cok kucuk ve uygulanabilirligide cok kolay. Bunun icin asagidaki kodlara bakabilirsiniz:

$cache_ismi = "sidebarcache";
$cache_zamani = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :)

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz.
if(false === get_transient($cache_ismi)){
ob_start();

/******* Cache Alinacak sorgular, kodlar v.s... *******/

// Burda ciktiyi DB ye kaydediyoruz..
set_transient($cache_ismi, ob_get_contents(), $cache_zamani);
ob_end_flush();

// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz.
}else{

// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz.
echo get_transient($cache_ismi);
}

Kod kalibimiz yukardadir, goreceginiz gibi bir onceki makalemdekinden cok kolay, cok basit ve uygulanabilirligi cok kolaydir. Ozellikle kisa ve kucuk olmasi isimizi daha cok kolaylastiriyor.

Bu kod kalibini birden fazla alanda kullanabilirsiniz. Bunun icin cache_ismi kismini her alan icin degistirmeni yeterli olacaktir. yinede yapmaniz gerekenleri kisaca aciklayayim, daha onceki makalemde anlamayan arkadaslar vardi.

Oncelikle kod kalibinda goreceginiz en bastaki bu alani cache alacagimiz alana gore duzenleyin:

$cache_ismi2 = "cache2";
$cache_zamani2 = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :)

daha sonra asagidaki isimlerini duzenledigimiz alanlari guncelleyelim:

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz.
if(false === get_transient($cache_ismi2)){
ob_start();

/******* Cache Alinacak sorgular, kodlar v.s... *******/

// Burda ciktiyi DB ye kaydediyoruz..
set_transient($cache_ismi2, ob_get_contents(), $cache_zamani2);
ob_end_flush();

// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz.
}else{

// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz.
echo get_transient($cache_ismi2);
}

Son olarak kod icindeki bu alana cache alinmasini istediginiz kodlari ekleyin:
/******* Cache Alinacak sorgular, kodlar v.s... *******/

Bunlardan sonra islemi basari ile gerceklestirmis olacaksiniz. Daha net anlayabilmeniz icin basit bir sidebar.php dosyasindaki kodlari cache almayi gosterecegim. Boylece sidebarda istediginiz kadar bilesen kullanabilirsiniz, cunku sorgu sayisi ciddi anlamda optimize edilecektir.

Ornek sidebar.php icin wordpress in default temasi olan Twenty_Ten temasinin sidebar.php dosyasini ela alacagim. Ornek sidebar.php dosyasi asagidaki gibidir:

< ?php /** * The Sidebar containing the primary and secondary widget areas. * * @package WordPress * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ ? >

< ?php /* When we call the dynamic_sidebar() function, it'll spit out * the widgets for that widget area. If it instead returns false, * then the sidebar simply doesn't exist, so we'll hard-code in * some default sidebar stuff just in case. */ if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ? >
< ?php get_search_form(); ? >
< ?php _e( 'Archives', 'twentyten' ); ? >

< ?php wp_get_archives( 'type=monthly' ); ? >

< ?php _e( 'Meta', 'twentyten' ); ? >

< ?php wp_register(); ? >

< ?php wp_loginout(); ? >
< ?php wp_meta(); ? > < ?php endif; // end primary widget area ? >
&nbsp;

< ?php // A second sidebar for widgets, just because. if ( is_active_sidebar( 'secondary-widget-area' ) ) : ? >
< ?php dynamic_sidebar( ‘secondary-widget-area’ ); ? >
&nbsp;

< ?php endif; ? >

Simdi bu kodlara benim yukarida ekledigim kalip kodunu uyguluyorum ve asagidakileri elde ediyorum:

< ?php /** * The Sidebar containing the primary and secondary widget areas. * * @package WordPress * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ /* EKLEDIGIM BIRINCI KISIM BASLANGIC */ 
$cacheSIDEBAR = "cacheSIDEBAR"; 
$cache_zamani = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :) 

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz. 
if(false === get_transient($cacheSIDEBAR)){ 
ob_start(); 
/* EKLEDIGIM BIRINCI KISIM BITIS */ ? >
< ?php /* When we call the dynamic_sidebar() function, it’ll spit out * the widgets for that widget area. If it instead returns false, * then the sidebar simply doesn’t exist, so we’ll hard-code in * some default sidebar stuff just in case. */ if ( ! dynamic_sidebar( ‘primary-widget-area’ ) ) : ? >

  • < ?php _e( ‘Archives’, ‘twentyten’ ); ? >

    < ?php wp_get_archives( ‘type=monthly’ ); ? >

  • < ?php _e( ‘Meta’, ‘twentyten’ ); ? >

    < ?php wp_register(); ? >

    • < ?php wp_loginout(); ? >

< ?php wp_meta(); ? > < ?php endif; // end primary widget area ? >

&nbsp;

< ?php // A second sidebar for widgets, just because. if ( is_active_sidebar( 'secondary-widget-area' ) ) : ? >
< ?php dynamic_sidebar( ‘secondary-widget-area’ ); ? >
<?php endif; 
/* EKLEDIGIM IKINCI KISIM BASLANGIC */ 
// Burda ciktiyi DB ye kaydediyoruz.. 
set_transient($cacheSIDEBAR, ob_get_contents(), $cache_zamani); 
ob_end_flush(); 
// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz. 
}else{ 
// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz. 
echo get_transient($cacheSIDEBAR); } 
/* EKLEDIGIM IKINCI KISIM BITIS */ ?>

Ekleme yaptigim yerleri gorebilirsiniz. Suanda bu sidebar dosyasinin yapacagi sorgu sayisi 1 yada 3 u gecmeyecektir. Ne kadar sorgu olursan olsun, isterse 500-1000 sorgu sonunda cacheye aldigindan sonraki belirledigimiz sure icinde her giren kisi sadece sisteme 2-3 sorgu bindirecektir. Buda wordpressin hostu yordugundan sikayetci arkadaslar icin bulunmaz bir nimet olacaktir :)

Yeni yazi eklendiginde yada duzenlendiginde CACHE temizleme (otomatik)
Sitenize yeni yazi eklediginizde yada bir yaziyi guncellediginizde cachelerin bosaltilmasini ve yeniden guncel hali ile cache alinmasini kolaylastirmak icin functions.php dosyasina asagidaki kodlari ekleyin:

function kuaza_cachesilhepsini(){
delete_transient( 'CACHE1' );
delete_transient( 'CACHE2' );
delete_transient( 'sidebarCACHE' );
}


add_action('publish_post', 'kuaza_cachesilhepsini');
add_action('update_post', 'kuaza_cachesilhepsini');
add_action('delete_post', 'kuaza_cachesilhepsini');

Bu kodlar ne is yapar?: sitenize yeni yazi eklediginizde, duzenlediginizde yada sildiginizda ALINAN CACHE iceriklerini temizler. Boylece yeni yazi ekledikten sonra sitenize girenler yeni yazilarinizi cache suresinin bitmesini beklemeden gormus olurlar.
Kullanimi ise basitdir!: delete_transient( ‘CACHE1’ ); seklinde eklediginiz cache isimlerini sirasi ile alt alta ilk fonksiyona ekleyin. Bu kadar. eklediginiz cache isimleri ile eslenen cache icerikler: yeni yazi yazildiginda, silindiginde yada guncellendiginde silinecektir.

Bu eklemenin gerekli olabilecegini dusundum, cunku cache suresini 24 saat belirten arkadaslarin bu caheleri bosaltmazi icin DB ye girmesi gerekecektir. Bu yeni eklemem ile bu dertden kurtarmis oluyorum sizi. Bu yuzden degerimi bilin :)

Konuyu kavrayabilmeniz icin detaylara onem verdim, yoksa cok kucuk bir kod kalibidir, onceki makale gibi anlamayanlarin cikacagini zannetmiyorum ama yinede anlamayan arkadaslar olursa yorum yapmalari yeterlidir, her konuda yardimci olmaya calisacagim, hor gormeyecegim :D