WordPress Tema Paneli Yapımı

Birkaç hafta önce temamda bir değişikliğe gittim. Orjinali arthemia olan kendi düzenlediğim bu temayı kullanmaya başladım. Temayı kullanmadan önce çoğu şey manuel olarak gerek single.php de gerek index.php de vs. düzenlenmesi gerekiyordu. Bu temaya bir panel olsa çok güzel olur düşüncesiyle panel yapımı aramaya başladım. Öncelikle burada Beyazıt abinin anlatımını buldum. Daha sonra yabancı bir sitede başka bir anlatım daha buldum. Beyazıt abinin anlatımı çok iyi ve o panelde hiç bir sıkıntı yaşamadım. Benim anlatacağım ise biraz daha kolay hazırlanması. Yalnız tek sıkıntıyla karşılaştım. Oda çift tırnak sorunu. Bir türlü düzeltemedim. :) Fazla uzatmadan anlatıma geçeyim.

Tema Paneli Ne İşe Yarar?

Yukarıda da bahsettiğim gibi bizim tema dosyalarını oynayarak manuel olarak yapacağımız işleri kolaylaştırıp direk tema paneli üzerinden ayarlayabiliriz. Mesela sidebarda reklam alanınız var fakat siz bunu her seferinde sidebar.php ye girip kodları düzelterek ayarlıyorsunuz. Bundan sonra panel üzerinden kodlarla uğraşmadan ayarlama yapabileceksiniz.

Kurulum Aşaması

Öncelikler functions.php dosyamızın php tagları arasına aşağıdaki kodu ekliyoruz.

if (file_exists(TEMPLATEPATH.'/temapaneli.php')) include_once("temapaneli.php");

Bu kod sayesinde temapaneli.php dosyamızı çağırdık. Şimdi gelelim panel kodlarına.

<?php
function mytheme_add_init() {
$file_dir=get_bloginfo('template_directory');
wp_enqueue_style("functions", $file_dir."/temapanel/temapanel.css", false, "1.0", "all");
wp_enqueue_script("rm_script", $file_dir."/temapanel/rm_script.js", false, "1.0");
}
$themename = "Usluer";
$shortname = "er";
$categories = get_categories('hide_empty=0&orderby=name');
$wp_cats = array();
foreach ($categories as $category_list ) {
$wp_cats[$category_list->cat_ID] = $category_list->cat_name;
}
array_unshift($wp_cats, "Kategori Seçiniz");
$options = array (
array( "name" => $themename." Options",
"type" => "title"),
array( "name" => "Genel Ayarlar",
"type" => "section"),
array( "type" => "open"),
array( "name" => "Logo Url",
"desc" => "Logonuzun adresini buraya yazınız.",
"id" => $shortname."_logo",
"type" => "text",
"std" => ""),
array( "name" => "Favicon Url",
"desc" => "Favicon adresini buraya yazınız.",
"id" => $shortname."_favicon",
"type" => "text",
"std" => ""),
array( "name" => "Twitter Kutusu",
"desc" => "Eğer Eveti seçerseniz reklam banneri yerine son twitiniz gözükür.",
"id" => $shortname."_twitter_kutusu",
"type" => "select",
"options" => array("Evet", "Hayır"),
"std" => ""),
array( "name" => "Twitter Kullanıcı Adı",
"desc" => "Twitter kullanıcı adını yazınız.",
"id" => $shortname."_twitter_kadi",
"type" => "text",
"std" => ""),
array( "type" => "close"),
);
function mytheme_add_admin() {
global $themename, $shortname, $options;
if ( $_GET['page'] == basename(__FILE__) ) {
if ( 'save' == $_REQUEST['action'] ) {
foreach ($options as $value) {
update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
foreach ($options as $value) {
if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }
header("Location: admin.php?page=temapaneli.php&saved=true");
}
else if( 'reset' == $_REQUEST['action'] ) {
foreach ($options as $value) {
delete_option( $value['id'] ); }
header("Location: admin.php?page=temapaneli.php&reset=true");
}
}
add_menu_page($themename, $themename, 'administrator', basename(__FILE__), 'mytheme_admin');
}
function mytheme_admin() {
global $themename, $shortname, $options;
$i=0;
?>
<div class="wrap rm_wrap">
<h2><?php echo $themename; ?> Ayarlar</h2>
<div class="rm_opts">
<form method="post">
<?php foreach ($options as $value) {
switch ( $value['type'] ) {
case "open":
?>
<?php break;
case "close":
?>
</div>
</div>
<br />
<?php break;
case "title":
?>
<p><?php echo $themename;?> tema yönetim paneline hoşgeldiniz.</p>
<?php break;
case 'text':
?>
<div class="rm_input rm_text">
<label for="<?php echo $value['id']; ?>"><?php echo $value['name']; ?></label>
<input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo stripslashes(get_settings( $value['id'])  ); } else { echo $value['std']; } ?>" />
<small><?php echo $value['desc']; ?></small><div class="clearfix"></div>
</div>
<?php
break;
case 'textarea':
?>
<div class="rm_input rm_textarea">
<label for="<?php echo $value['id']; ?>"><?php echo $value['name']; ?></label>
<textarea name="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" cols="" rows=""><?php if ( get_settings( $value['id'] ) != "") { echo stripslashes(get_settings( $value['id']) ); } else { echo $value['std']; } ?></textarea>
<small><?php echo $value['desc']; ?></small><div class="clearfix"></div>
</div>
<?php
break;
case 'select':
?>
<div class="rm_input rm_select">
<label for="<?php echo $value['id']; ?>"><?php echo $value['name']; ?></label>
<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
<?php foreach ($value['options'] as $option) { ?>
<option <?php if (get_settings( $value['id'] ) == $option) { echo 'selected="selected"'; } ?>><?php echo $option; ?></option><?php } ?>
</select>
<small><?php echo $value['desc']; ?></small><div class="clearfix"></div>
</div>
<?php
break;
case "checkbox":
?>
<div class="rm_input rm_checkbox">
<label for="<?php echo $value['id']; ?>"><?php echo $value['name']; ?></label>
<?php if(get_option($value['id'])){ $checked = "checked="checked""; }else{ $checked = "";} ?>
<input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />
<small><?php echo $value['desc']; ?></small><div class="clearfix"></div>
</div>
<?php break;
case "section":
$i++;
?>
<div class="rm_section">
<div class="rm_title"><h3><img src="<?php bloginfo('template_directory')?>/temapanel/images/trans.gif" class="inactive" alt="""><?php echo $value['name']; ?></h3><span class="submit"><input name="save<?php echo $i ?>" type="submit" value="Kaydet" />
</span><div class="clearfix"></div></div>
<div class="rm_options">
<?php break;
}
}
?>
<input type="hidden" name="action" value="save" />
</form>
<form method="post">
<p class="submit">
<input name="reset" type="submit" value="Ayarları Sıfırla" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
<div style="font-size:9px; margin-bottom:10px;"><a href="http://www.usluer.net">İsmail Usluer</a> tarafından hazırlanmıştır.</div>
</div>
<?php
}
?>
<?php
add_action('admin_init', 'mytheme_add_init');
add_action('admin_menu', 'mytheme_add_admin');
?>

Bu kodları metin belgesine veya herhangi bir yazım editörüne yapıştıralım. Ve düzenlememiz gereken yerleri düzenleyelim. 11 ve 12. satırlarda Usluer ve er yazmakta. Buradaki Usluer panel ismidir. er ise panel isminin kısa yazımıdır ve bu er önemlidir. Tema dosyalarına yazacağımız kontrollerde kullanacağız. Burada sadece bir kısım oluşturulmuş. Siz 25 ve 55. satırlar arasını kopyalayıp (25 ve 55. satırlar dahil) 55. satırın altına yapıştırıp düzenlediğinizde yeni kısımlar oluşturabilirsiniz. Tabi bunlar için çok fazla olmasada kod bilgisine ihtiyacınız vardır. Hiçbirşey bilmeyen biri bunları yapmakta zorlanacaktır.

Gereken yerleri düzenledikten sonra temapaneli.php olarak kaydediyoruz. Daha önceden de functions.php dosyamıza bir satır eklemiştik. functions.php ve temapaneli.php yi tema klasörümüzün içine atıyoruz. Admin panelimize girip tema panelini çalıştırdığımızda hiç hoş bir görüntü çıkmayacak karşımıza. Çünkü css ve js dosyalarını atmadık. :) Bu dosyaları yazımın sonunda paylaşacağım.

Panelin Temada Kullanılması

Mesela bir kontrole bağlı olarak ekrana panelden ayarladığımız bir metni yazdıralım.

<?php if (get_option('er_twitter_kutusu')=='Evet') {
echo get_option('er_twitter_kadi');
} ?>

Burada her iki seçeneği de anlatmaya çalıştım. Yaptığımız işlem ise çok basit. Eğer er_twitter_kutusu id’li combobox Evet ise er_twitter_kadi id`li metni ekrana yazdır. Buradaki er yukarıda da belirttiğim gibi panel isminin kısa yazımıdır.

Sonuç

WordPress temamız nasıl panelden kontrol edilir azda olsa bir fikir sahibi olduğumuzu düşünüyorum. Biraz üstünde durarak yarım saatte basit bir panel yapabilirsiniz. Merak ettiğiniz veya takıldığınız yerleri buradan bana sorarsanız elimden geldiğince yardım ederim.

Dosyalar

Buradan indirebilirsiniz. Zip’den çıkan dosyaları olduğu gibi tema klasörüne atınız.

Kendi panel demomu da buradan izleyebilirsiniz.

Panel ile reklam vs. gösteriminde sorun yaşayanlar okusun!

Aşağıdakileri temapaneli.php dosyasında değil, içeriği temada çağırırken yapacağız.

<?php echo stripslashes(get_option('id')); ?>

Yukarıda görüldüğü gibi içeriği temada çağırırken başına stripslashes(); getirilirse sorun çözülecektir.

Benzer Yazılar
Cevap Bırakın

Yorumlar 1 2
Yorum ( 87 )
  1. serhat
    13 Aralık 2012 - 15:35
    Cevapla
  2. serhat
    15 Aralık 2012 - 19:40
    Cevapla
  3. serhat
    23 Aralık 2012 - 00:20
    Cevapla
  4. hayrettin
    30 Nisan 2013 - 11:05
    Cevapla
    • Usluer Yazar
      30 Nisan 2013 - 11:11
      Cevapla
      • hayrettin
        30 Nisan 2013 - 19:21
        Cevapla
        • Usluer Yazar
          30 Nisan 2013 - 20:41
  5. SPoyraz
    25 Haziran 2013 - 17:14
    Cevapla
    • Usluer Yazar
      25 Haziran 2013 - 17:25
      Cevapla
  6. batuhan
    10 Şubat 2014 - 21:20
    Cevapla
  7. Burak
    10 Mart 2014 - 03:30
    Cevapla
  8. Zekican09
    24 Mayıs 2014 - 19:49
    Cevapla
  9. Zekican09
    24 Mayıs 2014 - 20:33
    Cevapla
  10. Serdar
    5 Temmuz 2014 - 01:08
    Cevapla
  11. Nazım Yılmaz
    23 Aralık 2014 - 12:14
    Cevapla
    • Usluer Yazar
      23 Aralık 2014 - 12:24
      Cevapla
      • Nazım Yılmaz
        23 Aralık 2014 - 12:34
        Cevapla
        • Usluer Yazar
          23 Aralık 2014 - 12:38
  12. Nazım Yılmaz
    23 Aralık 2014 - 13:04
    Cevapla
  13. Nazım Yılmaz
    23 Aralık 2014 - 14:37
    Cevapla
  14. hüseyin
    9 Kasım 2015 - 19:41
    Cevapla
    • Usluer Yazar
      10 Kasım 2015 - 09:47
      Cevapla
  15. Erşen MUSLU
    14 Ocak 2016 - 14:30
    Cevapla
    • Usluer Yazar
      15 Ocak 2016 - 08:04
      Cevapla
    • Ali
      19 Kasım 2016 - 17:56
      Cevapla
  16. Sercan
    21 Ocak 2016 - 15:36
    Cevapla
    • Usluer Yazar
      22 Ocak 2016 - 10:37
      Cevapla
      • Sercan
        22 Ocak 2016 - 11:01
        Cevapla
  17. Yakup
    24 Ocak 2016 - 21:46
    Cevapla
    • Usluer Yazar
      24 Ocak 2016 - 23:48
      Cevapla
  18. Mustafa DEMİR
    27 Haziran 2016 - 14:19
    Cevapla
    • Usluer Yazar
      29 Haziran 2016 - 17:11
      Cevapla
Yorumlar 1 2