İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Wordpress Tema Paneli Yapımı

isousluer

0
İyinet Üyesi
Katılım
14 Temmuz 2010
Mesajlar
386
Reaction score
12
Konum
Konya
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.
PHP:
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:
<?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:
<?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.

Makale: http://www.usluer.net/wordpress-tema-paneli-yapimi/
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst