Wordress “WordPress Missing Temporary folder” Hatasının Giderilmesi

Mesajda WordPress geçici dosyaların depolandığı dizine ulaşamıyor diyor. Bu dizin genellikle /tmp (root dizin altında). Eğer benim gibi Apache’nin VirtualHost/Directory direktifine php_admin_value open_basedir seçeneğini eklediyseniz hiçbir PHP bu dizinin dışına çıkamayacak ve WordPress doğal olarak bu hatayı verecektir.

Çözüm için;

  1. Directory direktifi olarak şunu ekleyin:
    php_admin_value upload_tmp_dir “/home/XXXX/www/wp-content/temp”
  2. Yukarıdaki patikayı XXXX‘i kendinize göre düzenlemeyi unutmayın.
  3. Patikanın işaret ettiği temp dizinini oluşturun ve erişim izinlerini ayarlayın.
  4. chown ve chmod ile sahiplik ve erişim izinlerini komşu dizin ile aynı yapın yeterli olacaktır.
  5. Artık sıra WordPress’e geçici dosyalar için bu temp dizini kullanması gerektiğini söylemeye geldi. wp-config.php dosyasına şu satırı ekleyin:
    define(‘WP_TEMP_DIR’, dirname(FILE) . ‘/wp-content/temp/’);
  6. Ayarların geçerli olması için Apache’yi yeniden başlatın:
    sudo systemctl restart apache2

WordPress Kullanmanın Dez Avantajları

wordpress_good_bad

Bir pesimistin WordPress deneyimleri. Biraz bardağın boş tarafı biraz da deneyim.

  1. WordPress kullanmanın en ciddi dez avantajı muhtemel güvenlik açıkları ile karşılaşma riskinizin yüksek olmasıdır. Bu risk WordPress’in dünyada kullanılan en popüler içerik yönetim sistemlerinden biri olmasından kaynaklanır (CMS – Content Management System)
  2. WordPress varsayılan olarak içerik sayfalarına numaralandırılmış kalıcı bağlantılar verir ve çoğu kullanıcı bunu kategorisel ve anlamlı URL adreslerine dönüştürmenin başarısından habersizdir. Bu kötü bir özelliktir.
  3. WordPress’in geliştiricileri son kullanıcıya herhangi bir destek hizmeti sunmuyor. Son kullanıcı bu ihtiyacını topluluğun forum ve e-posta listelerinden karşılamak zorunda kalırken, nadiren de olsa  çeşitli destek talebi ve sorularında da yanıtsız kaldığını görebilirsiniz.
  4. WordPress eklentileri daha çok amatör kullanım içindir ve profesyonel geliştiricilerin ihtiyacını gidermez. Bu sorun özellikle özgün temanız ile mevcut eklentileri entegre etmeye çalışırken karşınıza çıkar.
  5. Çok da standart olmayan eklenti kodlarını inceleyip anlamak  zaman israfına neden olabilir. Eklentilerin çoğu tamamen ücretsizdir fakat doğru eklentiyi bulmak bazen çok fazla zamanınızı alabilir. Durum böyleyken birçok eklentinin de yıllarca güncellenmediğini ve herhangi bir destek verilmediğine de şahit olabilirsiniz.  Tam da doğru eklentiyi bulduğunuzu düşündüğünüzde eklentinin sitenin diğer fonksiyonlarına bağlı olarak sitenin aniden istenildiği gibi çalışmamasına, sitenin normal işleyişini olumsuz etkilemeye ve hatta tarayıcı uyumsuzluklarının oluşmasına da neden olabilir.
  6. WordPress inanılmaz derecede eski sürümlerine uyumluluk sağlar. Bu iyi bir özellik gibi gözükse de WordPress’in programlandığı dil olan PHP’nin modern özelliklerinin kullanılmasını kısıtlamıştır.
  7. Performans. Kod satırı yüksek bir tema ve çok sayıda eklenti kullanıyorsanız WordPress süpriz derecede yüksek bellek ve CPU kaynağına gereksinim duyduğuna kısa sürede şahit olursunuz. Bu noktada önbellek (cache) eklentisi veya web sunucu önbelleklemesi kullanma zorunluluğu ortaya çıkar.
  8. Sizin belirtecekleriniz…

 

WordPress eklentisinin güncellenmesini engellemek

WordPress çok pratik bir güncelleme sistemine sahiptir. WordPress çekirdeğini, eklentileri ve temalarınızı bir tıklamayla kolayca güncelleyebiliyorsunuz. Fakat bir eklentinin kodları üzerinde bir değişiklik yapmışsanız bu özellik bir dezavantaja dönüşebilir. Kazara yapacağınız güncelleme, eklentide yaptığınız değişiklikleri de yok edecektir. Aşağıdaki kodu yerleştireceğiniz eklenti güncellemeler dışında kalacaktır.

add_filter('site_transient_update_plugins', 'dd_remove_update_nag');
function dd_remove_update_nag($value) {
 unset($value->response[ plugin_basename(__FILE__) ]);
 return $value;
}

WordPress’i Uzaktan Yüklemek

Kurulum için klasik olarak wordpress’in bilgisayarımıza indirir, genişletir ve FTP ile upload edererek kuruluma geçeriz. Bu prosedür de binlerce dosyanın FTP ile aktarılması vakit alır. Tam da bu sorunu pratik şekilde halleden WordPress Remote Installer (WRI) projesinden bahsetmek istiyorum.

WRI ufak bir PHP betiği. WordPress’in son sürümünü hızlı bir şekilde sunucuya indirip genişletiyor ve görevi WordPress Yükleyicisine devrediyor. Betiği WordPress’i kurmak istediğiniz dizine kopyaladıktan sonra çağırmanız yeterli.

WordPress menüsünü kod ile oluşturmak

WordPress bileşen panelinde menüleri istediğiniz yere yerleştirebilirsiniz. Fakat menü yöneticisi ile oluşturulan bir menüyü manuel, yani kodla ekrana için aşağıda yazdığım kodu kullanabilirsiniz. Genel olarak header.php dosyasındaki ilgili dynamic_sidebar kodunun çevresine bunu yerleştirebilir kafanıza göre yeniden tasarlayabilirsiniz.

Kısaca koddan bahsetmek gerekirse;  wp_get_nav_menu_items ile ilgili menünün tüm elemanlarını çağırıp get_sub_items ile alt menüsünün olup olmadığına bakıyoruz ve farklı bir css ile görüntülüyoruz. Tabi bu alt seçeneklerin de alt menüsü olabilir. Aşağıdaki kod sadece 3 seviye derine iniyor. Tasarım olarak buradaki görünümü kullandım. Siz de aynısını (mega menü deniyor) kullanmak isterseniz css dosyasını dahil etmeyi unutmayın.

Okumaya devam et “WordPress menüsünü kod ile oluşturmak”

WordPress’in görsel metin editörünü geri getirin

WordPress yeni yazı ekleme/düzenleme sayfasındaki görsel metin editörü pasif durumdaysa sorununuzu aşağıdaki yöntemlerden birisi ile çözebilirsiniz.

  • Öncelikle en son yüklediğiniz eklentilerden birisi buna neden oluyor olabilir. Eklentileri sırayla devre dışı bırakarak görsel metin editörünün durumunu kontrol edin.
  • Bazen güncelleştirmelerden sonra WordPress’in bazı dosyaları zarar görebiliyor ve bu soruna yol açıyor. WordPress’in kullanmakta olduğunuz sürümünü indirerek FTP ile dosyaların üzerine kopyalayın sorun çözülecektir.

WordPress eski gönderileri otomatik yayınlıyor

Bir süredir bloğun alt yapısını oluşturan WordPress’in, eski gönderileri otomatik olarak tekrar yayınladığını farkettim. Sorun kullandığım “SEO SearchTerms Tagging 2” eklentisinden kaynaklanıyormuş. Eklentinin seçenekler ekranındaki “Promote old post with no search engine traffic:” anahtarını off olarak ayarlayınca sorun çözüldü :)

WordPress’i Türkçeleştirmek (İşe yarayan yöntem)

Hasbel kader Wordpress’i  ingilizce yükleyipte sonradan Türkçeleştirmek istediğinizde, bu basit işin nasıl yapıldığını anlatan birçok yöntem önerildiğini göreceksiniz. Fakat buraya geldiğinize göre işe hiçbirisinin yaramadığını görmüş olmalısınız. Aşağıdaki adımları uygulamanız yeterli.

  1. wp-config.php dosyanızı sunucudan indirin ve içerisine define (‘WPLANG’, ‘tr’); satırını ekleyin.
  2. indirdiğiniz wp-config.php dosyasını sunucudaki kopyasının üzerine yazın.
  3. http://tr.wordpress.org/ adresinden son sürümü indirin ve genişletin (extract)
  4. Genişlettiğiniz dosyaların tamamını sunucuya kopyalayın (mevcut dosyaların üzerine yazın, korkmayın)
  5. Mutlu son. Yönetim paneline girin ve Türkçe olduğunu görün. ;)

WordPress Eklenti Geliştiricilerine Tavsiyeler

  1. WordPress eklentisinin kodları buradaki kod standartlarına uymalıdır. Lütfen satır içi dökümatasyon standartlarını da göz önünde bulundurunuz.
  2. Eklentinizdeki tüm fonksiyonlar WordPress çekirdeğindeki fonksiyonlar, diğer eklenti ve temalar ile çakışmaması için tekil bir isme sahip olmalıdır. Bu nedenle eklentinizin fonksiyonlarında, fonksiyon adından önce bir ön ek iyi bir fikirdir. Daha da iyi bir fikir ise eklenti fonksiyonlarınızı bir sınıf’ın içinde tanımlamaktır (sınıfın tekil bir ada sahip olması gerekir)
  3. Eklentilerinizdei, WordPress tablo adı ön eklerini doğrudan kodunuza yazmayın (genellikle ‘wp_‘). Bunun yerine $wpdb->prefix değişkenini kullandığınızdan emin olun. Okumaya devam et “WordPress Eklenti Geliştiricilerine Tavsiyeler”

WP MySQL Console Plugin

Click for English Translation

WP MySQL Console Nedir?

MySQL veritabanı sunucusu ile beraber gelen  komut kabuğunu çoğu kişi bilir. Komut kabuğu dediğim aslında MySQL’in standart veritabı istemci aracı (mysql.exe ./mysql). Bu araç ile SQL komutları kullanarak veritabanı sorguları çalıştırırz. Bu komut satırı aracının yerine birçok görsel istemci yazılımı geliştirilmiş olmasına rağmen, komut satırına uzun uzun SQL komutları yazmak da ayrı bir zevktir. Bilenler bilir ;) Ayrıca sözünü ettiğim görsel araçlar ile herzaman herşeyi yapmak da mümkün değil. Bu araçları kullanırken önünde sonunda komut satırına düşüp kendi SQL sorgularınızı çalıştırmanız gerekir.

Eklentinin ortaya çıkış nedenlerinden birisi de şöyle; MySQL istemcisi ile uzak bir bilgisayardaki veritabanı sunucusuna bağlanmak gerektiğinde bazen hosting’lerin güvenlik duvarı engeli karşımıza çıkabiliyor. Hosting (web barındırma) sağlayıcılar sunucudaki veritabanlarınıza yerel olarak erişmenize izin verirken, güvenlik amaçlı olarak uzaktan erişiminizi engellemiş olabilir. Benim gibi mysql komut kabuğunu kullanmayı alışkanlık haline getirmiş birisi için bu motivasyon kırıcı bir durum. WP MySQL Console tam da bu ihtiyaçtan ortaya çıkmış bir proje. WP MySQL Console için MySQL’in standart veritabanı istemcisini HTTP (ajax) üzerinden taklit eden web tabanlı bir istemci diyebiliriz. Kısaca mysql.exe‘nin web tabanlı biçimi de diyebilirsiniz. Bu projeyi geliştirirken orjinal mysql istemcisi ile aynı hissiyatı vermesine özen gösterdim (ok tuşları ile komut geçmişine ulaşabilir, fare imleci ile seçimi panoya kopyalayabilirsiniz). İstemci, HTTP protokolünü kullandığından, herhangi bir güvenlik duvarına takılması mümkün değil. (Not: Ancak geçmişte agresif yapılandırılmış uygulama güvenliği yazılımları tarafından bloke edildiği bildirilmişti)

WP MySQL Console yıllar önce geliştirdiğim phpMySQLConsole‘dan türettiğim bir eklenti. Uzun süredir geliştirmeye ara verdiğim phpMySQLConsole artık yoluna bir WordPress eklentisi olarak devam edecek.

Eklentiyi wordpress.org eklenti deposuna yönlendirdiğim aşağıdaki bağlantıyı kullanarak indirebilirsiniz.

Okumaya devam et “WP MySQL Console Plugin”

Call to a member function register_handler() hatası

WordPress alt yapısını blog dışından kullanabiliyoruz. Böylece WP sisteminin tüm fonksiyonları harici bir php sayfası ile entegre etmek mümkün olabiliyor. Bunun için wp-blog-header.php veya wp-load.php‘yi aşağıdaki şekilde include etmenin yeterli olduğu belirtilmiş.

<?php
/* Short and sweet */
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>

Gel gelilim ki yukarıdaki include’u (require) bir fonksiyon içinden dahil ettiğinizde aşağıdaki gibi saçma bir hata alıyorsunuz. Bu durum WordPress Codex’de dökümante edilmemiş.

<?php
function bir_php_fonksiyonu()
{
/* Short and sweet */
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
}
?>

Kodu yukarıdaki gibi fonksiyon içerisinde kullandığınızda oluşan hata şöyle:

Fatal error: Call to a member function register_handler() on a non-object in 
W:\home\public_html\wp-includes\media.php on line 1301

Teknik olarak nedenini hala daha anlayabilmiş değilim. Fikri olan varsa açıklar ise sevinirim.

WordPress Temalarındaki Gizli Tehlike

WordPress temelli bir site kurdunuz, sıra sitenize uygun bir görsel düzen bulmaya geldi. Şanslısınız, çünkü yüzlerce tema ücretsiz olarak emrinizde. Peki, her şey bu kadar harika mı? Ücretsiz sunulan bu temalar, beraberlerinde bazı tatsız sürprizler getiriyor olmasın? Evet, bu gerçekten de dikkate alınması gereken bir tehlike. TeknoSeyir’in bu bölümünde, WordPress konusunda önemli deneyime sahip olan editörümüz Özkan Erden, Murat Gamsız ile birlikte ücretsiz sunulan temaların taşıyabilecekleri tehlikeleri dile getiriyor.

WordPress’in SQL Performansını İncelemek

WordPress‘in yüklenme hızı çalıştırdığı SQL komutlarının tamamlanma süresiyle doğrudan ilişkilidir. Bazen hasarlı bir MySQL tablosu, bazen bozulmuş bir indeks ve bazen de yanlış kodlanmış bir eklenti MySQL performasını çok ciddi ölçülerde düşürebilir (Hatta bu durumdan dolayı hosting firmanız tarafından uyarılabilirsiniz). SQL başarımının (performans) düşmesi sayfanızın geç açılmasına neden olur. Aşağıda anlatacağım yöntem ile WordPress’in hangi SQL’leri nekadar süre ile çalıştırdığını görebileceğiz. SQL’lerin çalışma süresi bize, başarım soruna daha iyi odaklanabilmek için kılavuzluk yapacak.

Okumaya devam et “WordPress’in SQL Performansını İncelemek”

WordPress options-permalink 403 Forbidden Hatası

Windows sunucularda karşılaştığım bu hata .htaccess dosyasından kaynaklanıyor. Eğer internette tarif edilen  yöntemlerini deneyip de çözüm bulamadıysanız .htaccess dosyasına  FollowSymLinks direktifini eklemeyi deneyin. .htacess dosyasına eklemeniz gereken 2 satır aşağıdaki gibi.

Options All -Indexes
Options +FollowSymLinks

.htaccess’i kullanan bir başka eklentiye sahip değilseniz .htaccess dosyasının tam içeriği aşağıdaki gibi olacaktır.

# BEGIN WordPress
Options +FollowSymLinks
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

WordPress – WP Simple Cache Plugin

WP Simple Cache, wordpress kullanan sitelerin cevap süresini azami derece azaltan bir eklenti. Benzer birkaç eklenti varken neden böyle bir eklenti yazmaya giriştim derseniz, daha hızlı ve kullanımı kolay olan bir eklenti hazırlamak istedim. Bunda kullandığım diğer cache eklentilerinin yükleme ve performanslarında yaşadığım sorunlar etkili oldu. Ayrıca bu eklenti ile wordpress deneyimimi artırma şansı buldum. WP Simple Cache wordpress camiasına hediye ettiğim iikinci eklentim oldu. İlk göz ağırım WP Onlywire Auto Poster eklentisini buradan inceleyebilirsiniz.

Okumaya devam et “WordPress – WP Simple Cache Plugin”

WordPress’e Dosya Yükleyememe Sorunu

Herhangi bir şekilde wordpress’e dosya yükleyemiyorsanız bunun birçok nedeni olabilir. Gönderinize resim/görüntü eklediğinizde hiçbir hata almadığınız halde resim görüntülenmiyorsa sorun yükleme dizininizde olabilir.

Benim yaşadığım sorun şöyle idi: WordPress yönetim ekranındaki Ayarlar->Çeşitli sayfasından sitenize upload edeceğiniz dosyaların bulundurulacağı dizini belirtebiliyorsunuz. Varsayılan olarak bu dizin wp-content/uploads olarak ayarlı. Burada dikkat edilmesi gereken şey yazdığınız dizin yolunun başında ve sonunda taksim “/” işareti olmamalı. Ayar sayfasında nasıl yazılacağıyla ilgili örnek verilmiş ama uyarı yapılmamış. Sorunu nasıl çözerim diye araştırma yaparken wordpress.org da şöyle bir sayfa buldum.  Burada yükleme sorunlarına yol açabilecek olası durumlar ve çözümlerinden bahsedilmiş. Burada anlatmaya çalıştığım sorunun nedeni bu sayfadaki 9. maddede anlatılmış. Ben ettim siz etmeyin… :)