
WordPress de yeni bir sayfa olusturmak istediginizde ve bu sayfaya seo (rewrite) ozelligi kazandirmaniz gerekebilir. Boyle durumlarda wordpress admin paneli yetersiz kaliyor, islerimizi fonksiyon yazarak yerine getirmemiz gerekebiliyor. Bu konuda degisken parametreleri kullanarak farkli url yapilari olusturmayi anlatacagim.
Ornek senaryo
Temaniza yeni bir sayfa eklediniz ve bu sayfayi kullanarak adres satirindaki degisken bilgileri alip veritabaninizda kontrol ettirip sayfaya yazacaksiniz.
Baslarken
Ornek sayfa olusturalim ve icerigini asagidaki sekilde yapalim. Bu dosyayi kullandiginiz tema dosyasinin icinde page-kuaza-ornek-sayfa.php ismiyle olusturun.
<?php /** * Template Name: kuaza-ornek-sayfa */ //get_header(); global $wp_query; echo 'parametre : ' . $wp_query->query_vars['parametre'].'<hr>'; echo 'ornek_id : ' . $wp_query->query_vars['ornek_id']; ?> <?php //get_footer(); ?>
Sonrasinda admine girelim ve sayfa ekle kismini acalim. Baslik ve icerik girebilirsiniz, cok onemli degil bu kisim ama asagida resimde goreceginiz bolumde kuaza-ornek-sayfa kismini secmeniz gerekli.
Ve yayinlayin, Sonrasinda adres satiri bu sekilde olacak: wp-admin/post.php?post=16&action=edit&message=6 kirmizi kismi aklinizda tutun cunku fonksiyon dosyasina ekleyecegimiz fonksiyonlarimizda kullanacagiz.
Fonksiyonlarimiz
Burda bize iki fonksiyon gerekecek. Birisi get parametresini tanitma (sayfada kullanabilmemiz icin), digeride url yapisini olusturmak. Url yapisi sitenizdeki konularin linkleri anlamindadir, buda amacimiz farkli bir sayfa olusturmak ve buna farkli bir url yapisi vermek.
Asagidaki kodlari temanizin icerisinde bulunan functions.php dosyasini acarak en altina ekleyin (php taglari arasina)
/* * Url yapisina parametre ekleme * Ornek: https://makaleci.com/index.php?page_id=16¶metre=ornek_icerik&ornek_id=6161 * Bunlari eklemezseniz olusturdugunuz url sayfasinda linkdeki parametreyi alamazsiniz */ function yeni_rewrite_etiketi() { add_rewrite_tag('%parametre%', '([^&]+)'); add_rewrite_tag('%ornek_id%', '([^&]+)'); } add_action('init', 'yeni_rewrite_etiketi', 10, 0); /* * Url rewrite linki ekleme * Ornek: https://makaleci.com/kuaza-sayfa/ornek_icerik/6161 * Default: https://makaleci.com/index.php?page_id=16¶metre=ornek_icerik&ornek_id=6161 */ function yeni_rewrite_kurali() { add_rewrite_rule('^kuaza-sayfa/([a-zA-Z]+)/([0-9]+)/?','index.php?page_id=16¶metre=$matches[1]&ornek_id=$matches[2]','top'); } add_action('init', 'yeni_rewrite_kurali', 10, 0);
Yukaridaki fonksiyonlarimizda goreceginiz page_id=16 kismi var. Budaki 16 kismini sizin olusturdugunuz sayfanin ID si ile degistirin, Ve kaydedin.
Son adim
Geriye islemin en can alici kismi kaliyor. Bunu yapmadiginizda ilginc problemlerle karsilasabilir, neden oluyor bu diye isyanda bulunabilirsiniz ki bende oyle oldu :).
Admin panelden Kalıcı Bağlantı Ayarları kismini acin: /wp-admin/options-permalink.php ve ayarlarinizi kaydedin, bu kadar. Burda onemli olan URL Rewrite yapisini kullanmiyorsaniz, burdaki islemdeki seo link kismi calismayacak, default yapi calisacaktir.
Ve yeni sayfamiz olusturuldu. Ornek bu sayfayi actiginizda olusturdugumuz sayfa karsimiza cikacak:
http://SITE-ISMI.com/kuaza-sayfa/ornekicerik/6161
Ornek resim:
Bu sekilde farkli sayfalar olusturabilirsiniz arkadaslar. Degisken kisimlarini degistirerekde ayni sayfaya ulasarak cektiginiz GET degiskenindeki ile veritabani islemleri yapabilirsiniz. Ben sayfayi olusturdum, bundan sonra yapacaginiz islemleri ornek sayfa kismindan yurutebilirsiniz.
Default sayfa dosyasinda header ve footer fonksiyonlarini include etmedim. Siz kullanim seklinize gore ekleyebilir yada iptal edebilirsiniz.