WordPress İçinde Özel Proje Oluşturmak
WordPress içinde kendi .php dosyalarımızı nasıl kullanabiliriz? Bu .php dosyalarını kullanırken wordpress url yapısından nasıl faydalana biliriz?
Öncelikle bir wordpress sayfası oluşturmamız gerekiyor. Oluşturduğumuz bu sayfaya GET parametrelerini göndereceğiz. Gelen GET parametreleri sayesinde işlem yaptırabiliriz.
1. Sayfa Oluşturma
Tüm GET parametrelerimizi aşağıdaki resimde kırmızı daire içinde oluşturulan sef link sayesinde göndereceğiz.
2. Yeniden Yazma (rewrite) Kuralı Oluşturalım
GET parametrelerini işlememizi sağlayacak kuralımızı temamızın function.php dosyası içine ekleyeceğiz. Kırmızı daire içinde yazan sef linkimiz ile aşağıdaki kuralda belirttiğimiz sef link aynı olmalıdır.
function my_insert_rewrite_rules( $rules ) { $newrules = array(); $newrules['(harika-sozler)/([a-zA-Z0-9-]+)$'] = 'index.php?pagename=$matches[1]&soz_sahibi=$matches[2]'; $newrules['(harika-sozler)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$'] = 'index.php?pagename=$matches[1]&soz_sahibi=$matches[2]&soz_sayfa=$matches[3]'; return $newrules + $rules; } add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
3. Parametreleri Ekleyelim
Hangi parametrelerin geldiğini belirtmek için aşağıdaki fonksiyonu kullanmalıyız. Ben sadece iki parametre gönderdim.
function my_insert_query_vars( $vars ) { array_push($vars, 'soz_sahibi'); array_push($vars, 'soz_sayfa'); return $vars; } add_filter( 'query_vars','my_insert_query_vars' );
4. Aldığımız Parametreleri İşlemek
Temamızın page.php dosyası içine bir if kontrolü ekleyerek bu paremetleri işleyebiliriz.
Örnek Bağlantı. https:/ahmeti.net/harika-sozler/soz_sahibi/soz_sayfa/
$page_name_spc=get_query_var('pagename'); if ( $page_name_spc == 'harika-sozler' ){ require 'ahmeti_wp_soz.php'; }else{ require 'std_page.php'; }
5. Özel .php Dosyamızda Parametreleri İşlemek
3 numaralı başlıkta iki parametre eklemiştik. Bu parametrelerin kontolünü yapalım.
$aa_soz_sayfa=get_query_var('soz_sayfa'); $aa_soz_sahibi=get_query_var('soz_sahibi'); if ( !empty($aa_soz_sahibi) && !empty($aa_soz_sayfa) ){ // SOZ SAHIBI SAYFASI && SAYFA }elseif (!empty($aa_soz_sahibi)){ // SOZ SAHIBI SAYFASI }else{ // INDEX }
6. Rewrite Cache’ine Dikkat Edin
WordPress rewrite kurallarını cache’te tutmaktadır. Bunlar kalıcı bağlantılar sayfasını güncellediğinizde bu cache’te güncellenir. Yada aşağıdaki fonksiyonu temanızın function.php dosyasının en altına ekleyin.
add_action( 'wp_loaded','my_flush_rules' ); function my_flush_rules() { $rules = get_option('rewrite_rules'); if ( ! isset( $rules['(harika-sozler)/([a-zA-Z0-9-]+)$'] ) || ! isset( $rules['(harika-sozler)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$'] ) ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } }
Ve sonunda bizde wordpress içinde bir proje oluşturmuş olduk. Takıldığınız bir nokta varsa yorumlarda belirtebilir siniz. Herkese iyi çalışmalar…
Bu sayfa 3.620 kez görüntülendi.
Hocam bu yöntemle sayfa yapısını
“siteadresi.com/sayfa-baslik/”
şeklinden
“siteadresi.com/indir/sayfa-baslik” şekline getirdim. Bu yüzden 2 şekilde de aynı sayfaya ulaşılabiliyor. Ben sadece 2. link ile ulaşılasını istiyorum yani 1. çalışmasın. Rewrite_rule’ları listelediğim zaman
“[indir/([a-zA-Z0-9-]+)$] => index.php?&pagename=$matches[1]”
“[page/?([0-9]{1,})/?$] => index.php?&paged=$matches[1]” şeklinde ikisi de bulunuyor. Page olan kısmı nasıl silebilirim acaba?
4 nolu “Aldığımız Parametreleri İşlemek” ve 5 nolu “Özel .php Dosyamızda Parametreleri İşlemek” içeriğinde anlatmaya çalıştığım if kontrolünü kullanarak hangi url deseninde hangi sayfanın açılacağını kontrol edebilirsiniz.
Sürekli sayfa bulunamadı hatası alıyorum. Herşeyi harfiyen yapmama rağmen 🙁
1 saattir uğraşıyordum. Mesajı yazdıktan sonra gördüm hatamı. 😀
Merhaba, benim sorum şu şekilde: mesela abc.com adında domain adım var ve ben bu alan adına blog kurdum adres cubuğunda abc.com/esra şeklinde görünmesini istiyorum . Herhangi bir yazıya tıklandığında ise abc.com/esra/yazi şeklinde görünmesini istiyorum. Bu mümkün mü?
Merhaba Esra,
Yukarıda bahsettiğin turdeki link yapısı, önerilen bir yapı değildir. Ama yapılabilir. Ftp adresinize giriş yapıp daha sonra public_html klasörünüz içine esra adında bir klasör açıp daha sonra wordpress kurulum dosyalarını bu klasör içine atarak kurulumu gerçekleştirebilirsiniz.
Bunun yerine subdomain kullanmak daha mantılı gibi görünüyor. Bu sayede esra.abc.com/yazi sekinde link yapınız olacaktır.
Ayarlar > kalıcı bağlantılar sayfasından özeli seçip ‘/esra/%postname%/’ olarak ayarladığın zaman bağlantılar istediğin gibi olacaktır. (tırnaklar hariç)