'Black-Dios Farkıyla Özel Konu / Wordpress Nasıl Çalışır ? / Hackleğiniz veya Kullandığınız Altyapıyı Ne Kadar Biliyorsunuz ?

'Black-Dios

Uzman üye
21 Ara 2013
1,136
0
İzmir
[FONT=&quot]WORDPRESS NASIL ÇALIŞIR ?

[/FONT]
[FONT=&quot]Wordpress içerik yönetim sisteminin nasıl çalıştığını kavrayan geliştirici sayısı çok fazla olmamakla beraber, anlaşılması da hakikaten zor. Bunun başlıca sebeplerinden biri, tamamıyla nesne yönelimli bir alt yapıya sahip olmamasıdır.[/FONT]

[FONT=&quot]Wordpress[/FONT][FONT=&quot], 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=&quot]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=&quot]Wp-blog-header[/FONT][FONT=&quot], Wordpress içerik yönetim sisteminin başlatılması boyunca üç temel işlemden tek başına sorumludur. Bu işlemler ;

[/FONT] [FONT=&quot]1. [/FONT][FONT=&quot]Wp-load-php[/FONT][FONT=&quot] dosyasını mutlak olarak sayfaya dahil etmek[/FONT]
[FONT=&quot]2. [/FONT][FONT=&quot]Wp ()[/FONT][FONT=&quot]fonksiyonunu çalıştırmak.[/FONT]
[FONT=&quot]3. [/FONT][FONT=&quot]Template-loader.php[/FONT][FONT=&quot] dosyasını mutlak olarak sayfaya dahil etmek[/FONT]

[FONT=&quot]Wp-load.php [/FONT][FONT=&quot]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=&quot]DB_NAME[/FONT]
· [FONT=&quot]DB_USER[/FONT]
· [FONT=&quot]DB_PASSWORD[/FONT]
·
[FONT=&quot]DB_HOST

[/FONT]
[FONT=&quot]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=&quot]Define ( ‘WPLANG’ , ‘tr_TR’ )[/FONT][FONT=&quot] ;

[/FONT] [FONT=&quot]Eğer sonradan, Wordpress içerik yönetim sisteminin dilini değiştirmek istiyorsak yapmamız gereken iki şey mevcuttur.[/FONT]
· [FONT=&quot]Dil paketlerini wp-contect/languages içerisine atmak.[/FONT]
· [FONT=&quot]Wp-config.php[/FONT][FONT=&quot] dosyasında WPLANG sabitinin değerini dönüştürmek istediğimiz dil olarak belirlemek.

[/FONT] [FONT=&quot]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=&quot]Wp-settings.php[/FONT][FONT=&quot]dosyası işe, “WPINC” adında bir sabit tanımlayarak başlar. Bu sabit “/wp-includes” dizinine işaret etmektedir.

[/FONT] [FONT=&quot]Sabitin tanımlanmasının ardından wp-includes dizininden üç adet dosya sayfaya mutlak olarak dahil edilir. Bunlar ;

[/FONT] · [FONT=&quot]Load.php[/FONT]
· [FONT=&quot]Default-constants.php[/FONT]
·
[FONT=&quot]Version.php

[/FONT]
[FONT=&quot]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=&quot]LOAD.PHP

[/FONT]
[FONT=&quot]Wp_unregister_GLOBALS ()

[/FONT]
[FONT=&quot]Register Global, güvenlik nedeniyle deaktif edilir.

[/FONT] [FONT=&quot]Wp_fix_server_vars ()

[/FONT]
[FONT=&quot]Çeşitli yüklemeler için $_SERVER değişkenini düzeltmelerden geçirir.

[/FONT] [FONT=&quot]Wp_check_php_mysql_versions ()

[/FONT]
[FONT=&quot]Gerekli olan minimum PHP ve MYSQL versiyonlarını denetler.

[/FONT] [FONT=&quot]Wp_maintenance ()

[/FONT]
[FONT=&quot]Gerekli şartlar yerine getirildiğinde, Wordpress içerik yönetim sistemini bir uyarı mesajı ile bakıma ***ürür.

[/FONT][FONT=&quot]Timer_start ()

[/FONT]
[FONT=&quot]PHP standartlarına göre mikro zaman yakalama başlatılır.

[/FONT] [FONT=&quot]Timer_stop ()

[/FONT]
[FONT=&quot]Fonksiyona ait sorgu/cevap arasında geçen süreyi döndürür.

[/FONT] [FONT=&quot]Wp_debug_mode ()

[/FONT]
[FONT=&quot]Olası PHP hatalarının görüntülenmesini sağlar. Wordpress ayıklama kipini de devreye sokar.

[/FONT] [FONT=&quot]Wp_set_lang_dir ()

[/FONT]
[FONT=&quot]Dil dosyalarının bulunduğu dizinin konumu belirlenir.

[/FONT][FONT=&quot]Require_wp_db ()

[/FONT]
[FONT=&quot]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=&quot]Wp_set_wpdb_vars ()

[/FONT]
[FONT=&quot]Wordpress veritabanında bulunan tablolara ait ön eklerini belirler. Ayrıca veritabanı tablo kolonları için format belirteçlerini ayarlar.

[/FONT][FONT=&quot]Wp_start_object_cache ()

[/FONT]
[FONT=&quot]Wordpress içerik yönetim sisteminin nesne önbelleğini başlatır.

[/FONT] [FONT=&quot]Wp_not_installed()

[/FONT]
[FONT=&quot]Wordpress, sunucuda başarılı bir şekilde kurulmamış ise kurulum sayfasına yönlendirir.

[/FONT][FONT=&quot]Wp_get_mu_plugins ()

[/FONT]
[FONT=&quot]Kullanılması zorunlu olan eklentileri dizi şeklinde döndürür.

[/FONT] [FONT=&quot]Wp_set_internal_encoding ()

[/FONT]
[FONT=&quot]Mb_internal_encoding () fonksiyonu ile dahili kodlamayı belirler.

[/FONT][FONT=&quot]Shutdown_action_hook ()

[/FONT]
[FONT=&quot]PHP’nin yürütmesini tamamlamadan hemen önce çalışan kancadır.

[/FONT] [FONT=&quot]Wp_clone ()

[/FONT]
[FONT=&quot]Herhangi bir nesneyi kopyalamaya imkan sunar.

[/FONT] [FONT=&quot]İs_admin ()

[/FONT]
[FONT=&quot]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=&quot]İs_blog_Admin ()

[/FONT]
[FONT=&quot]Geçerli isteğin wordpress admin panelyani “wp-admin” için olup olmadığına karar verir.

[/FONT] [FONT=&quot]İs_network_admin ()

[/FONT]
[FONT=&quot]Geçerli isteğin ağ yönetim paneli “wp-admin/network” için olup olmadığına karar verir. Örnek olarak ;

[/FONT]
Kod:
  [FONT=&quot]<?php if ( is_network_admin () )[/FONT]
  [FONT=&quot]{[/FONT]
  [FONT=&quot]Echo “ Şu anda network sayfasını görüntülüyorsunuz.” ;[/FONT]
  [FONT=&quot]}[/FONT]
  [FONT=&quot]Else[/FONT]
  [FONT=&quot]{[/FONT]
  [FONT=&quot]Echo “ Şu anda network sayfasını görüntülemiyorsunuz” ;[/FONT]
  [FONT=&quot]} ?>[/FONT]
Edit : Arkadaşlar konu gözünüze kısa gibi gelmesin bu Part 1 ' dir yazı anca 3-4 günde tamamlanacaktır. Bu konuyu okumadan ben Wordpress Uzmanıyım demeyin lütfen :)

~ 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:

2nokta

Yaşayan Forum Efsanesi
28 Şub 2013
16,689
16
Artık bunude editlemek üzere sabah okucam :D
Tebrik ederim.Devam devm :D
 

duman05

Adanmış Üye
9 Eyl 2012
6,326
2
Bende 2nokta gibi sabah okuyacağım ellerine sağlık kardeşim devamını bekliyoruz :) renklerde iyi olmuş :D
 

Reuters

Özel Üye
7 Tem 2013
7,261
4
Reu Island
2 font yerine 4 5 font kullansaydın daha iyi olurdu diye düsünüyorum her iki konun icin gecerli bu anlatımların saglam olmus ellerine saglık :)
 

By Ghost

Katılımcı Üye
11 Tem 2013
941
2
C:\Linux
Günümüzde en çok tercih edilen sistemlerden birisi. Ve sadece yüzeysel kullanan çok güzel anlatım olmuş ellerine sağlık :)
 

Veteran 7

El Patrón
26 Ara 2011
11,500
12,864
Bu konunda güzel wordpress hakkında bilgiler vermeye devam et eline sağlık :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.