WordPress içerik yönetim sisteminin günümüzdeki sitelerdeki kullanımın artması ile bir çok site sahibi yeni bir yazılım yazdırmak yerine wordpress sistemini sektörüne ve kendine göre özelleştirmektedirler. WordPress sisteminin de kolay geliştirebilir bir yapısı olduğundan bir çok özelliği dilediğimiz gibi fonksiyonlar yadımıyla yapabilmekteyiz. Bu konumda bu fonksiyonlardan yaralanarak temaya özel sayfa oluşturarak panel dışı bir listeleme yapacağız.
Öncelikle temaya özel bir sayfa oluşturmak için ne yapacağımıza bakalım.
[onemli]Özel sayfa oluşturmak için kullanılan sayfa başı kod ;[/onemli]
[kod]
<?php
/* Template Name: İçerik Sayfası Ecancan.net */
?>
[/kod]
Yukarıdaki kodu tema için yeni bir php sayfası oluşturup en başına eklememis gereklidir oluşturduğumuz dosyayı tema dosyasının ana dizinine gönderdiğinizde wordpress te temanız için özel sayfayı tanımlanmış olacaktır. Artık geriye kalan tek şey bizim içerik eklemek için yazacağımız kodlar.
Öncelikle içerik eklemek için değerleri gireceğimiz bir [onemli]HTML[/onemli] form oluşturalım.
<form action="" method="post"> <label for="">Yazı Başlığı</label> <input type="text" name="yazi_basligi" required/><br> <label for="">Yazı İçeriği</label> <textarea name="icerik" id="" cols="30" rows="10" required/></textarea><br> <label for="">Etiketler</label> <input type="text" name="etiketler" required/><br> <label for="">Kategoriler</label> <?php $kategoriler=get_categories(array('hide_empty' =>0)); foreach($kategoriler as $kategori){ ?> <input type="checkbox" name="kategori[]" value="<?php echo $kategori->cat_ID;?>"><?php echo $kategori->name;?> <?php }?> <br> <input type="submit" value="Yazıyı Gönder"> </form>
Yukarıda kod betiğinde html olarak bir form oluşturmuş olduk. Bu form tasarımdan tasarıma şekil değişikliği gösterebilir.Şimdi yukarıda form elemetlerinin yanında php olarak kullanmış olduğum kod blogunda ne yaptığımızı anlatalım.
<?php $kategoriler=get_categories(array('hide_empty' =>0)); foreach($kategoriler as $kategori){ ?> <input type="checkbox" name="kategori[]" value="<?php echo $kategori->cat_ID;?>"><?php echo $kategori->name;?> <?php }?>
Öncelikle yukarıdaki içerik ekleme sayfasında kategorileri sayfamıza dahil etmek için [onemli]get_categories()[/onemli] fonksiyonunu kullandık.Bu fonksiyonu da [onemli]$kategoriler[/onemli] değişkeni içine tanımlamış olduk. Burada amacmız kategorilerin hepsini [onemli]checkbox[/onemli] şeklinde listelmek. Bu arada [onemli]’hide_empty’ =>0[/onemli] komutu ile içerik olmayan kategorileride listeye dahil etmiş olduk. Ardından [onemli]foreach[/onemli] döngüsü ilede [onemli]$kategoriler[/onemli] değişkenini [onemli]$kategori[/onemli] değişkeni olarak düzenledik. Ardından [onemli]<?php echo $kategori->name;?>[/onemli] kodu ile kategori adını ve [onemli]<?php echo $kategori->cat_ID;?>[/onemli] kodu ile de kategori ID sini yazdırmış olduk.
Bu formların post yapabilmesi için ise aşağıda vereceğim kod betiğini özel sayfaya yapıştırmanız yeterlidir.
<?php $yazi_basligi= $_POST["yazi_basligi"];// yazı başlığı değişkene atanır. $icerik=$_POST["icerik"];//icerik değişkene atanır. $etiketler=$_POST["etiketler"];// etiketler değişkene atanır. $kategoriler=$_POST["kategoriler"];//kategoriler değişkene atanır. $parametreler = array( 'post_title' => $yazi_basligi, 'post_content' => $icerik, 'post_status' => 'draft',// taslak olarak gönderir. Bu bu yayınşanmış olarak göndermek için draft değerini publish olarak değiştirebilirsiniz bu durumda direkt olarak 'post_author' => 1, 'post_category' => $kategoriler, 'tags_input' => $etiketler ); wp_insert_post($parametreler); if ($_POST){ echo 'Başarıyla Gönderildi'; if (!$_POST){ echo 'Hata'; } }else { ?> <form action="" method="post"> <label for="">Yazı Başlığı</label> <input type="text" name="yazi_basligi" required/><br> <label for="">Yazı İçeriği</label> <textarea name="icerik" id="" cols="30" rows="10" required/></textarea><br> <label for="">Etiketler</label> <input type="text" name="etiketler" required/><br> <label for="">Kategoriler</label> <?php $kategoriler=get_categories(array('hide_empty' =>0)); foreach($kategoriler as $kategori){ ?> <input type="checkbox" name="kategori[]" value="<?php echo $kategori->cat_ID;?>" ><?php echo $kategori->name;?> <?php }?>
Yukarda kod betiğinde ne yaptığımız yanında açıklamalar ile kısaca anlattım bu kod blogunu özel sayfaya ekleyerek.Tüm işlemleri gerçekleştirmiş olacaksınız.Bu sayede sizde içerikleriniz temanıza özel bir sayfada içerik ekleme işlemini gerçekleştirebilecksiniz. Ancak bu kod blogunun güvenliği için [onemli]wp_stript_all_tags()[/onemli] fonksiyonu ile bir güvenlik sağlayalım.
<?php $yazi_basligi= wp_strip_all_tags($_POST["yazi_basligi"]);// yazı başlığı değişkene atanır. $icerik=$_POST["icerik"];//icerik değişkene atanır. $etiketler=$_POST["etiketler"];// etiketler değişkene atanır. $kategoriler=$_POST["kategoriler"];//kategoriler değişkene atanır. $parametreler = array( 'post_title' => $yazi_basligi, 'post_content' => $icerik, 'post_status' => 'draft',// taslak olarak gönderir. Bu bu yayınşanmış olarak göndermek için draft değerini publish olarak değiştirebilirsiniz bu durumda direkt olarak 'post_author' => 1, 'post_category' => $kategoriler, 'tags_input' => $etiketler ); wp_insert_post($parametreler); if ($_POST){ echo 'Başarıyla Gönderildi'; if (!$_POST){ echo 'Hata'; } }else { ?> <form action="" method="post"> <label for="">Yazı Başlığı</label> <input type="text" name="yazi_basligi" required/><br> <label for="">Yazı İçeriği</label> <textarea name="icerik" id="" cols="30" rows="10" required/></textarea><br> <label for="">Etiketler</label> <input type="text" name="etiketler" required/><br> <label for="">Kategoriler</label> <?php $kategoriler=get_categories(array('hide_empty' =>0)); foreach($kategoriler as $kategori){ ?> <input type="checkbox" name="kategori[]" value="<?php echo $kategori->cat_ID;?>" ><?php echo $kategori->name;?> <?php }?> <br> <input type="submit" value="Yazıyı Gönder"> </form> <?php } ?>
Yukarıdaki işlemleri yaptığımızda artık güvenilir olarak bir içerik gönderme sistemini temaya eklemiş olduk. Artık wordpress paneline girmeden içerik ekleme özelliğini temaya kazandırmış olduk.
Makalemin sonun kadar okuduğunuz için teşekkür eder ve bir yorum ile destek verirseniz sevinirim.Soru ve sorunlarınız için konu altına yorum bırakabilir yada iletişim sayfasından bana mail gönderebilirsiniz. Bir başka konuda görüşmek üzere.