[FONT="]WORDPRESS NASIL ÇALIŞIR ?
[/FONT]
[/FONT]
[FONT="]Wordpress[/FONT][FONT="], spagetti kod düzeniyle yazılmıştır. Spagetti kod düzeni, herhangi bir MVC mimarisini kullanmadan yazılan kod öbeklerine verilen genel bir isimdir. Adını, içerisindeki karmaşadan alır. Bu kod düzeni, wordpress için bir dezavantaj gibi anlaşılmamalıdır. Wordpress, spagetti kod düzenine rağmen stabil yapısını her zaman korumaktadır. Gelin Wordpress içerik yönetim sisteminin nasıl çalıştığına bir göz atalım.[/FONT]
[FONT="]Wordpress içerik yönetim sistemine dair sunucumuzda ki her aktivite ilk olarak Index.php dosyası ile başlar. Bu basit dosya, gelen bütün isteklere cevap vererek sayfalarımızda yüklenir. Index.php dosyası, içerisinde iki adet ana fonksiyon barındırır. Bu fonksiyonlardan biri WP_USE_THEMES adında bir sabit tanımlar ve bu sabite TRUE değerini verir. Böylelikle Wordpress çekirdeğine, sayfaları ve yazıları görüntülerken aktif temayı kullanması gerektiğini bildirir. İkincisi ise; wp-blog-header.php dosyasını Index.php içerisine dahil eden require () fonksiyonudur.
[/FONT] [FONT="]Wp-blog-header[/FONT][FONT="], Wordpress içerik yönetim sisteminin başlatılması boyunca üç temel işlemden tek başına sorumludur. Bu işlemler ;
[/FONT] [FONT="]1. [/FONT][FONT="]Wp-load-php[/FONT][FONT="] dosyasını mutlak olarak sayfaya dahil etmek[/FONT]
[FONT="]2. [/FONT][FONT="]Wp ()[/FONT][FONT="]fonksiyonunu çalıştırmak.[/FONT]
[FONT="]3. [/FONT][FONT="]Template-loader.php[/FONT][FONT="] dosyasını mutlak olarak sayfaya dahil etmek[/FONT]
[FONT="]Wp-load.php [/FONT][FONT="]dosyasının, Wordpress içerik yönetim sisteminin başlatılmasında basit ama son derece önemli bir rolü vardır. İşe Wordpress yüklemesinin kök dizinine ABSPATH adında bir sabit tanımlayarak başlar.
[/FONT] Bu sabit, başlatma işleminin geri kalan kısmı boyunca sıkça kullanılır. Bu sabit yardımıyla, include () ve require () fonksiyonlarında, dirname (__FILE__) yerine ABSPATH kullanabiliyoruz. Wp-load.php dosyası, wp-config.php dosyasını yükleyerek görevini tamamlar. Wp-config.php dosyasına hepimiz bir parça aşinayızdır. Eminim çoğumuz, kurulum esnasında gerekli olan veritabanı, şifre gibi değerleri girmek için bu dosyayı düzenlemek üzere açmıştır. Tabi günümüzde, sunucumuzun yazma izinleri müsait ise bu manuel yazma işlemi de son bulmuş durumda. Artık kurulum aracından otomatik olarak wp-config.php dosyası oluşturulabilmekte. Wp-config.php dosyası içinde veritabanı bağlantısı için gerekli tanımlamalar yapılmaktadır. Bu tanımlamalar ;
· [FONT="]DB_NAME[/FONT]
· [FONT="]DB_USER[/FONT]
· [FONT="]DB_PASSWORD[/FONT]
· [FONT="]DB_HOST
[/FONT] [FONT="]Bu tanımlamalara ait değerler, MySQL de Wordpress için ayırmış olduğumuz veritabanı bilgileri ile uyuşuyor ise, bağlantı gerçekleştirilir. Aksi takdirde wp-config.php üzerinde hatalar meydana gelir. Wp-config.php dosyası aynı zamanda Wordpress içerik yönetim sisteminin dilini de belirler. Bizim dilimiz için yapılan tanımlama şu şekildedir ;
[/FONT] [FONT="]Define ( WPLANG , tr_TR )[/FONT][FONT="] ;
[/FONT] [FONT="]Eğer sonradan, Wordpress içerik yönetim sisteminin dilini değiştirmek istiyorsak yapmamız gereken iki şey mevcuttur.[/FONT]
· [FONT="]Dil paketlerini wp-contect/languages içerisine atmak.[/FONT]
· [FONT="]Wp-config.php[/FONT][FONT="] dosyasında WPLANG sabitinin değerini dönüştürmek istediğimiz dil olarak belirlemek.
[/FONT] [FONT="]Bu ufak ipucunu da bilgilendirme olarak burada belirtmiş olalım. Wp-config.php dosyası son olarak wp-settings.php dosyasını mutlak bir şekilde dahil ederek görevini tamamlar. Bu dosyada Wordpress içerik yönetim sistemi için önemli görevlere sahiptir.
[/FONT] [FONT="]Wp-settings.php[/FONT][FONT="]dosyası işe, WPINC adında bir sabit tanımlayarak başlar. Bu sabit /wp-includes dizinine işaret etmektedir.
[/FONT] [FONT="]Sabitin tanımlanmasının ardından wp-includes dizininden üç adet dosya sayfaya mutlak olarak dahil edilir. Bunlar ;
[/FONT] · [FONT="]Load.php[/FONT]
· [FONT="]Default-constants.php[/FONT]
· [FONT="]Version.php
[/FONT] [FONT="]Açıklamalarımızda, mutlak olarak dahil edildi gibi ibareler kullanmamızın nedeni, dahil etme işlemi esnasında require () fonksiyonu kullanılmasıdır. Bu noktaya açıklık getirdiysek, Load.php içerisinde bulunan fonksiyonlara ve neler yaptıklarına değinelim.
[/FONT] [FONT="]LOAD.PHP
[/FONT] [FONT="]Wp_unregister_GLOBALS ()
[/FONT][FONT="]Register Global, güvenlik nedeniyle deaktif edilir.
[/FONT] [FONT="]Wp_fix_server_vars ()
[/FONT] [FONT="]Çeşitli yüklemeler için $_SERVER değişkenini düzeltmelerden geçirir.
[/FONT] [FONT="]Wp_check_php_mysql_versions ()
[/FONT] [FONT="]Gerekli olan minimum PHP ve MYSQL versiyonlarını denetler.
[/FONT] [FONT="]Wp_maintenance ()
[/FONT] [FONT="]Gerekli şartlar yerine getirildiğinde, Wordpress içerik yönetim sistemini bir uyarı mesajı ile bakıma ***ürür.
[/FONT][FONT="]Timer_start ()
[/FONT] [FONT="]PHP standartlarına göre mikro zaman yakalama başlatılır.
[/FONT] [FONT="]Timer_stop ()
[/FONT] [FONT="]Fonksiyona ait sorgu/cevap arasında geçen süreyi döndürür.
[/FONT] [FONT="]Wp_debug_mode ()
[/FONT] [FONT="]Olası PHP hatalarının görüntülenmesini sağlar. Wordpress ayıklama kipini de devreye sokar.
[/FONT] [FONT="]Wp_set_lang_dir ()
[/FONT] [FONT="]Dil dosyalarının bulunduğu dizinin konumu belirlenir.
[/FONT][FONT="]Require_wp_db ()
[/FONT] [FONT="]Wordpress kurulu olan veritabanına içerik ekleme, silme, güncelleme işlemleri için kullandığımız $wpdbsınıfı burada tanımlanır.
[/FONT] [FONT="]Wp_set_wpdb_vars ()
[/FONT] [FONT="]Wordpress veritabanında bulunan tablolara ait ön eklerini belirler. Ayrıca veritabanı tablo kolonları için format belirteçlerini ayarlar.
[/FONT][FONT="]Wp_start_object_cache ()
[/FONT] [FONT="]Wordpress içerik yönetim sisteminin nesne önbelleğini başlatır.
[/FONT] [FONT="]Wp_not_installed()
[/FONT] [FONT="]Wordpress, sunucuda başarılı bir şekilde kurulmamış ise kurulum sayfasına yönlendirir.
[/FONT][FONT="]Wp_get_mu_plugins ()
[/FONT] [FONT="]Kullanılması zorunlu olan eklentileri dizi şeklinde döndürür.
[/FONT] [FONT="]Wp_set_internal_encoding ()
[/FONT] [FONT="]Mb_internal_encoding () fonksiyonu ile dahili kodlamayı belirler.
[/FONT][FONT="]Shutdown_action_hook ()
[/FONT] [FONT="]PHPnin yürütmesini tamamlamadan hemen önce çalışan kancadır.
[/FONT] [FONT="]Wp_clone ()
[/FONT] [FONT="]Herhangi bir nesneyi kopyalamaya imkan sunar.
[/FONT] [FONT="]İs_admin ()
[/FONT] [FONT="]Gelen isteğin, admin paneli için olup olmadığını denetler. Temalarımıza entegre modül geliştirirken de işe yaramaktadır. Modül geliştirme esnasında current_user_can () fonksiyonundan da faydalanılabilir.
[/FONT] [FONT="]İs_blog_Admin ()
[/FONT] [FONT="]Geçerli isteğin wordpress admin panelyani wp-admin için olup olmadığına karar verir.
[/FONT] [FONT="]İs_network_admin ()
[/FONT] [FONT="]Geçerli isteğin ağ yönetim paneli wp-admin/network için olup olmadığına karar verir. Örnek olarak ;
[/FONT]
Kod:
[FONT="]<?php if ( is_network_admin () )[/FONT]
[FONT="]{[/FONT]
[FONT="]Echo Şu anda network sayfasını görüntülüyorsunuz. ;[/FONT]
[FONT="]}[/FONT]
[FONT="]Else[/FONT]
[FONT="]{[/FONT]
[FONT="]Echo Şu anda network sayfasını görüntülemiyorsunuz ;[/FONT]
[FONT="]} ?>[/FONT]
~ Part 2 ~
is_user_admin ()
Geçerli isteğin kullanıcı sayfası için olup olmadığına karar verir.
is_multisite ()
Wordpress üzerinde multi site desteğinin aktif olup olmadığına karar verir.
Örnek olarak ;
Kod:
[COLOR=Olive]<?php
if ( is_multisite () )
{
echo 'Multi site aktif;
}
?>[/COLOR]
get_current_blog_id ()
Geçerli olan blog ID değerini döndürür.
Load.php içerinde barınan fonksiyonların bir kısmı yukarıdaki gibidir. Fark edildiği üzere, fonksiyonlar konuşma diline çok yakındır.
Son düzenleme: