WordPress Nasıl Çalışır?

WordPress içerik yönetim sisteminin nasıl çalıştığını bilen geliştirici sayısı çok azdır. WordPress’in tamamıyla nesne yönelimli bir yapıya sahip olmaması, anlaşılabilmesini zorlaştırmaktadır.

WordPress spagetti kod düzeniyle yazılmıştır. Spagetti kod düzeni, herhangi bir MVC mimarisini kullanmadan yazılan kod öbeklerine verilen addır. Adını, içerisindeki karmaşadan alır. WordPress spagetti kod düzenine sahip olmasına rağmen stabil yapısını her zaman korumaktadır.

WordPress İçerik Yönetim Sistemi Nasıl Çalışır ?

WordPress sunucumuzdaki her işlem ilk olarak index.php dosyasının çağırılmasıyla başlar. Bu dosya, gelen tüm isteklere cevap vererek yüklenir.
Index.php dosyası, içerisinde iki ana fonksiyon barındırır.
Bunlar aşağıda belirtilen fonksiyonlardır.

define( 'WP_USE_THEMES', true );
require __DIR__ . '/wp-blog-header.php';

‘WP_USE_THEMES’ adındaki sabit ile sayfaları ve yazıları görüntülerken aktif temayı kullanması gerektiği WordPress çekirdeğine bildirilir.

require() fonksiyonu ile wp-blog-header.php dosyası index.php içerisine dahil edilir.

Wp-blog-header.php, WordPress sisteminin başlatılması boyunca 3 temel işlemden sorumludur. Bu işlemler;

  1. wp-load.php dosyasını sayfaya dahil etmek
  2. wp() fonksiyonunu çalıştırmak
  3. template-loader.php dosyasını sayfaya dahil etmek

Wp-load.php dosyasının, WordPress sisteminin başlatılmasında son derece önemli bir rolü vardır. WordPress yüklenmesinin kök dizinine “ABSPATH” adında bir sabit tanımlamaktadır.
Bu sabit yardımıyla include() ve require() fonksiyonlarında, dirname(__FILE__) yerine ABSPATH kullanılabilmektedir.
Wp-load.php dosyası wp-config.php dosyasını yükleyerek görevini tamamlamaktadır.

Wp-config.php kurulum esnasında gerekli olan veri tabanı bağlantısı için gerekli olan tanımlamaları içermektedir. Bu tanımlamalar;

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
  • DB_HOST

Bu tanımlamalara ait değerler, MySQL‘de WordPress için belirlemiş olduğumuz bilgiler ile uyuşuyor ise, bağlantı gerçekleştirilir. Wp-config.php dosyası aynı zamanda sistemin dilini de belirlemektedir. Türkçe için yapılan tanımlama şu şekildedir;

define('WPLANG', 'tr_TR');

Son olarak wp-config.php dosyası wp-settings.php dosyasını sayfaya dahil ederek görevini tamamlamaktadır.

Wp-settings.php dosyası, işe “WPINC” adında bir sabit tanımlayarak başlamaktadır. Bu sabit “/wp-includes” dizinine işaret etmektedir.

define( 'WPINC', 'wp-includes' );

Sabitin tanımlanmasının ardından wp-includes dizininden üç adet dosya sayfaya dahil edilmektedir. Bunlar;

  • load.php
  • default-constants.php
  • version.php

Load.php içerisinde bulunan fonksiyonları ve neler yaptıklarını inceleyelim:

wp_unregister_GLOBALS()
Register Global, güvenlik nedeniyle deaktif edilir.

wp_fix_server_vars()
Çeşitli yüklemeler için $_SERVER değişkenini düzeltmelerden geçirir.

wp_check_php_mysql_versions()
Gerekli olan minimum PHP ve MYSQL versiyonları denetler.

wp_maintenance()
Gerekli şartlar yerine getirildiğinde, WordPress sistemini bir uyarı mesajı ile bakıma götürür.

timer_start()
PHP standartlarına göre mikro zaman yakalama başlatılır.

timer_stop()
Fonksiyona ait sorgu/cevap arasında geçen süreyi döndürür.

wp_debug_mode()
Olası PHP hatalarının görüntülenmesini sağlar. WordPress ayıklama kipini devreye sokar.

wp_set_lang_dir()
Dil dosyalarının bulunduğu dizinin konumu belirlenir.

require_wp_db()
WordPress kurulu olan veri tabanına içerik ekleme, silme, güncelleme işlemleri için kullandığımız $wpdb sınıfı burada tanımlanır.

wp_set_wpdb_vars()
Veri tabanında bulunan tablolara ait ön eklerini belirler. Ayrıca tablo kolonları için format belirteçlerini ayarlar.

wp_start_object_cache()
WordPress sisteminin nesne önbelleğini başlatır.

wp_not_installed()
WordPress sunucuda başarılı bir şekilde kurulmamış ise kurulum sayfasına yönlendirir.

wp_get_mu_plugins()
Kullanılması zorunlu olan eklentileri dizi şeklinde döndürür.

wp_set_internal_encoding()
mb_internal_encoding() fonksiyonu ile dahili kodlamayı belirler.

shutdown_action_hook()
PHP’nin yürütülmesini tamamlamadan hemen önce çalışan kancadır.

wp_clone()
Herhangi bir nesneyi kopyalamaya imkan sunar.

is_admin()
Gelen isteğin, admin paneli için olup olmadığını denetler. Modül geliştirirken kullanılır. current_user_can() fonksiyonundan da faydalanılabilir.

is_blog_admin()
Geçerli isteğin WordPress admin paneli için olup olmadığına karar verir.

is_network_admin()
Geçerli isteğin ağ yönetim paneli “wp-admin/network” için olup olmadığına karar verir.

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.

get_current_blog_id()
Geçerli olan blog ID değerini döndürür.

Load.php içerisinde barınan fonksiyonların bir kısmı yukarıdaki gibidir.

Default-constants.php dosyasının içeriğini inceleyelim.

Adından da anlaşılacağı üzere varsayılan sabitleri içerisinde barındıran fonksiyon dosyasıdır. İçerisinde bulunan fonksiyonlar sayesinde bazı sabitler tanımlanır. Bu Sabitler;

wp_initial_constants()
Sistemler sabitleri tanımlar.

wp_plugin_directory_constants()
Eklenti dizinini, sabitler ile tanımlar.

wp_cookie_constants()
Çerezler ile ilgili sabitleri tanımlar.

wp_ssl_constants()
Çerezlere göre ssl yönlendirmesi yapan sabitleri tanımlar.

wp_functionality_constants()
Çekirdeğe dair sabitler burada tanımlanır.

wp_templating_constants()
Themes klasörü ile ilgili sabitler burada tanımlanır.

Version.php

İçerisinde değişkenler ile sürüm bilgileri tutulur. Fonksiyon veya sabit barındırmaz. Konum olarak “wp-includes/versiyon.php” patikasında barınır. İçerisinde tutulan bilgiler şunlardır;

$wp_versiyon
WordPress versiyon bilgisi.

$wp_db_version
WordPress veri tabanı revizyonunu tutar.

$tinymce_version
TinyMCE görsel metin editörünün versiyonunu tutar.

$required_php_version
Gerekli olan minimum PHP versiyonunu tutar.

$required_mysql_version
Gerekli olan minimum MYSQL versiyonunu tutar.

WordPress dosyalarının görevleri, içerisinde barındırdıkları fonksiyon ve tanımlamalar aşağıdaki gibidir.

COMPAT.PHP
Json_encode(), json_decode(), mb_substr() gibi eski PHP sürümlerinde bulunmayan fonksiyonları içerisinde barındırır.

FUNCTİONS.PHP
is_new_day(), remove_arg() gibi fonksiyonları içerisinde bulundurur. WordPress içerik yönetim sisteminin uygulama geliştirme arayüzüdür.

MO.PHP
Konum olarak “wp-includes/pomo/” patikasında bulunur. Mo sınıfını içerisinde barındırır. Ayrıca streams.php ve translations.php dosyalarını içerisine dahil eder. Dil dosyaları için gereklidir.

CLASS-WP.PHP
WordPress sisteminin yapılandırma sınıfıdır. 2.0 sürümünden itibaren bulunmaktadır.

CLASS-WP-ERROR.PHP
WordPress hata sınıfıdır. Is_wp_error() fonksiyonunu ve wp_error sınıfını içerisinde bulundurur.

PLUGİN.PHP
Eklentilerimiz için API, bu dosya içerisinde bulunur. 1.5 sürümünden bu yana geliştirilmektedir. Eklentiler ile eylemler ve filtreler oluşturma imkanı sunar.

CLASS-WP-WALKER.PHP
Walker sınıfına ait kod öbeklerini içerisinde barındırır. 2.1 sürümünden itibaren bulunmaktadır.

CLASS-WP-AJAX-RESPONSE.PHP
AJAX isteklerine XML olarak tepki verir.

FORMATTING.PHP
Yazılar ve sayfalardaki metinlerde paragraflara ayırma işlemi, gülücük işaretleri gibi öğeleri düzenleyen dosyadır.

CAPABILITIES.PHP
WP_Roles sınıfını içerisinde barındırır. current_user_can() gibi fonksiyonlar da bu dosya içerisinde tanımlanmıştır.

QUERY.PHP
WordPress sorgularını içerisinde barındırır. Ara yüzün, veri tabanı ile iletişimini sağlar. Ayrıca is_tag(), is_author(), is_archive() gibi fonksiyonlar bu dosya içerisinde tanımlanmıştır.

THEME.PHP
Tema ve sitil dosyalarına ait fonksiyonlar burada tanımlanmıştır. temalarımıza daha dinamik bir şekilde müdahale etmemize imkan sunan fonksiyonları içerisinde barındırır.

CLASS-WP-THEME.PHP
Wp_themes
sınıfı burada tanımlanır. Ayrıca temaya ait bilgilerimizi style.css içerisinde tanımladığımızda bu sınıf sayesinde yorumlanır.

TEMPLATE.PHP
Şablonlara ulaşmamızı sağlayan fonksiyonları içerisinde barındırır. Örnek olarak; get_archive_template() ve get_author_template() fonksiyonları verilebilir.

USER.PHP
Kullanıcı kimlik doğrulamasından sorumlu olan dosyadır. Panel dışı üyelik modüllerimiz için kullanabileceğimiz wp_create_user() ve panel dışı login işlemlerinde kullanabileceğimiz wp_signon() fonksiyonları burada tanımlanmıştır.

META.PHP
Belirtilen WordPress nesnelerine metadata ekleme ve güncelleme imkanı sunan fonksiyonları içerisinde barındırır.

GENERAL-TEMPLATE.PHP
get_header(), get_sidebar(), get_footer() gibi fonksiyonlar bu dosya içerisinde tanımlanmaktadır.

LINK-TEMPLATE.PHP
Bağlantılara ait fonksiyonlar burada tanımlanır. next_posts(), previous_posts() ve the_permalink() fonksiyonları bunlara örnek olarak verilebilir.

AUTHOR-TEMPLATE.PHP
Yazarlara ait fonksiyonlar burada tanımlanır. Bu fonksiyonlar yazarlara ait bilgi edinmemize imkan sunar. get_the_author_link(), the_author() fonksiyonları örnek olabilir.

POST.PHP
Yazılara ait fonksiyonlar burada tanımlanır. Buradaki fonksiyonlar, yazı ekleme, silme, güncelleme gibi işlemleri gerçekleştirir.

POST-TEMPLATE.PHP
Yazı şablonuna ait fonksiyonları içerisinde barındırır. Yazı başlığını aldığımız the_title() fonksiyonu buna örnektir.

POST-THUMBNAİL-TEMPLATE.PHP
Öne çıkarılmış görsellere ait fonksiyonlar burada tanımlanır. has_post_thumbnail(), the_post_thumbnail() bu fonksiyonlara örnektir.

CATEGORY.PHP
Kategorileri yönetmek için kullanabileceğimiz fonksiyonlar burada tanımlanmaktadır. get_categories(), get_cat_name() bu fonksiyonlara örnek olarak verilebilir.

CATEGORY-TEMPLATE.PHP
Kategorilere ait bilgileri almak için kullandığımız fonksiyonlar burada tanımlanır. Örneğin; get_category_link(), get_the_category_by_ID() gibi.

COMMENT.PHP
Yorumları yönetmek için kullanılan fonksiyonlar burada tanımlanır. Yorumların onaylanması, silinmesi veya güncellenmesi işlemlerini gerçekleştirir.

COMMENT-TEMPLATE.PHP
Yorumlara ait bilgileri aldığımız fonksiyonlar burada barınmaktadır. Örneğin; comments_popup_link() ve otomatik yorum formunu oluşturan ve yorumları listeleyen comments_template() fonksiyonu gibi.

REWRITE.PHP
Kalıcı bağlantıları şekillendiren fonksiyonları içerisinde barındırır.

FEED.PHP
RSS/ATOM beslemeleri için oluşturulmuş fonksiyonları içerisinde barındıran dosyadır. Buradaki fonksiyonlar döngü içerisinde kullanılmak üzere tasarlanmıştır.

KSES.PHP
Bir dizi halinde izin verilen HTML/XHTML elementleri içerisinde tutar. HTML/XHTML filtresidir.

CRON.PHP
WordPress CRON uygulama geliştirme ara yüzüdür. Zamanlanmış olaylar oluşturmak için kullandığımız fonksiyonlar burada tanımlanmıştır.

DEPRECATED.PHP
Gelişen WordPress sürümleri ile beraber bazı fonksiyonlar geliştirilerek farklı bir boyut alır. Fonksiyonların eski hali artık önerilmeyen olarak ifade edilir ve deprecated.php içerisinde yerini alır. Fonksiyonlar buraya belli bir süre yok olmak için gelir.

SCRIPT-LOADER.PHP
WordPress betik ve sitil yükleyicisidir. Bütün css ve js dosyaları buradaki fonksiyonlar tarafından yüklenir. Admin alanı için gereklidir.

TAXONOMY.PHP
Taxonomy görevini üstlenen dosyadır.

UPDATE.PHP
Bu dosyada WP sürümleri kontrol edilir. Eğer yeni bir güncelleme mevcut ise bu görevi update.php dosyası üstlenir.

CANONICAL.PHP
Canonical bağlantı, birden fazla bağlantının aynı sayfaya gitmesini engellemek ve arama motorlarına bir ana link seçilip belirtilmesidir. Bu göreve ait fonksiyonlar canoncial.php içerisinde bulunur.

SHORTCODES.PHP
[Galeri=1,2,3,4,5] gibi shortcode tanımlamaları yapabilmemiz için gerekli fonksiyonları içerisinde barındırır. Örnek olarak add_shortcode() fonksiyonu verilebilir.

CLASS-WP-EMBED.PHP
İçerik içinde resim, video, swf nesneleri gibi öğeleri embed kodları ile göstermemize imkan sunan sınıf ve fonksiyonları barındırır.

MEDİA.PHP
WordPress medya görüntüleme Api’sidir. Resimleri düzenleme ile ilgili fonksiyonları içerisinde barındırır. set_post_thumbnail_size() ve add_image_size()

HTTP.PHP
Http istekleri için API

CLASS-HTTP.PHP
Http istekleri için sınıf

WIDGETS.PHP
Sidebar, footer gibi alanlara bileşen desteği kazandırmamıza imkan sunan fonksiyonları içerisinde barındırır. Buradaki sınıf ve fonksiyonlar, bileşenlerin nasıl oluşturulacağını belirler.

NAV-MENU.PHP
Menüleri yönettiğimiz fonksiyonlar burada barınır. Yeni menü alanları ekleme, silme ve güncelleme ile ilgili fonksiyonlar burada tanımlanmıştır.

NAV-MENU-TEMPLATE.PHP
Menü şablonu ile ilgili fonksiyonları içerisinde barındırır. Menüleri görüntülemek için kullandığımız fonksiyonlar burada tanımlanmıştır.

ADMIN-BAR.PHP
Admin panelinde gerçekleştirdiğimiz olan hareketleri yakalayan, işlerimizi kolaylaştıran kontrol ve fonksiyonları oluşturan dosyadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir