WordPress Yazı Alanına Metabox Ekleme

1. Adım:
İlk önce functions.php‘yi açıyoruz ve <?php tagından hemen sonra aşağıdaki kodu yazarak metabox.php‘yi çağırıyoruz.

include_once(“metabox.php”);

2. Adım:

Notepad++(Siz hangi kod editörünü kullanıyorsanız onu açın) açıyoruz ve aşağıdaki kodları yapıştırıpmetabox.php olarak temanın bulunduğu klasöre kaydediyoruz.

/*
 * Plugin Name: SAYFANIN ADI
 * Author: YAZARIN ADI
 * Author URI: YAZAR İLETİŞİM ADRESİ
 */
$prefix= 'ozellikler_';
$meta_box= array(
 'id'=> 'my-meta-box',
 'title'=> 'Custom meta box',
 'page'=> 'post',
 'context'=> 'normal',
 'priority'=> 'high',
 'fields'=> array(
 array(
 'name'=> 'Text box',
 'desc'=> 'Enter something here',
 'id'=> $prefix. 'text',
 'type'=> 'text',
 'std'=> 'Default value 1'
 ),
 array(
 'name'=> 'Textarea',
 'desc'=> 'Enter big text here',
 'id'=> $prefix. 'textarea',
 'type'=> 'textarea',
 'std'=> 'Default value 2'
 ),
 array(
 'name'=> 'Select box',
 'id'=> $prefix. 'select',
 'type'=> 'select',
 'options'=> array('Option 1', 'Option 2', 'Option 3')
 ),
 array(
 'name'=> 'Alt Yazı Seçeneği',
 'id'=> $prefix. 'dil',
 'type'=> 'radio',
 'options'=> array(
 array('name'=> 'Alt Yazısız ', 'value'=> 'altyazisiz'),
 array('name'=> 'Alt Yazılı ', 'value'=> 'turkcealtyazi')
 )
 ),
 array(
 'name'=> 'Video Kalitesi',
 'id'=> $prefix. 'videokalitesi',
 'type'=> 'radio',
 'options'=> array(
 array('name'=> '240p ', 'value'=> 'p240p'),
 array('name'=> '360p ', 'value'=> 'p320p'),
 array('name'=> '720p ', 'value'=> 'p720p'),
 array('name'=> '1080p ', 'value'=> 'p1080p')
 )
 ),
 array(
 'name'=> 'Checkbox',
 'id'=> $prefix. 'checkbox',
 'type'=> 'checkbox'
 )
 )
);
add_action('admin_menu', 'mytheme_add_box');
// Add meta box
functionmytheme_add_box() {
 global$meta_box;
 add_meta_box($meta_box['id'], $meta_box['title'], 'mytheme_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']);
}
// Callback function to show fields in meta box
functionmytheme_show_box() {
 global$meta_box, $post;
 // Use nonce for verification
 echo'<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
 echo'<table class="form-table">';
 foreach($meta_box['fields'] as$field) {
 // get current post meta data
 $meta= get_post_meta($post->ID, $field['id'], true);
 echo'<tr>',
 '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>',
 '<td>';
 switch($field['type']) {
 case'text':
 echo'<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta? $meta: $field['std'], '" size="30" style="width:97%" />',
 '<br />', $field['desc'];
 break;
 case'textarea':
 echo'<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta? $meta: $field['std'], '</textarea>',
 '<br />', $field['desc'];
 break;
 case'select':
 echo'<select name="', $field['id'], '" id="', $field['id'], '">';
 foreach($field['options'] as$option) {
 echo'<option', $meta== $option? ' selected="selected"': '', '>', $option, '</option>';
 }
 echo'</select>';
 break;
 case'radio':
 foreach($field['options'] as$option) {
 echo'<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta== $option['value'] ? ' checked="checked"': '', ' />', $option['name'];
 }
 break;
 case'checkbox':
 echo'<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta? ' checked="checked"': '', ' />';
 break;
 }
 echo'<td>',
 '</tr>';
 }
 echo'</table>';
}
add_action('save_post', 'mytheme_save_data');
// Save data from meta box
functionmytheme_save_data($post_id) {
 global$meta_box;
 // verify nonce
 if(!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) {
 return$post_id;
 }
 // check autosave
 if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
 return$post_id;
 }
 // check permissions
 if('page'== $_POST['post_type']) {
 if(!current_user_can('edit_page', $post_id)) {
 return$post_id;
 }
 } elseif(!current_user_can('edit_post', $post_id)) {
 return$post_id;
 }
 foreach($meta_box['fields'] as$field) {
 $old= get_post_meta($post_id, $field['id'], true);
 $new= $_POST[$field['id']];
 if($new&& $new!= $old) {
 update_post_meta($post_id, $field['id'], $new);
 } elseif(''== $new&& $old) {
 delete_post_meta($post_id, $field['id'], $old);
 }
 }
}

3. Adım:

Geldik son adımımıza. Bu adımda metaboxa yazılan yazıyı nasıl çağıracağımızı göstereceğiz. Aşağıda verdiğim kodu metaboxdaki veriyi nereye çekmek istiyorsanız oraya yazın.

<?php  if(get_post_meta($post->ID, 'ozellikler_dil', true)) : ?>  // Eğer if döngüsü kullanacaksak yazıyoruz
<?php  echoget_post_meta($post->ID, 'ozellikler_dil', true) ?> // Metaboxu çekecek olan kod
<?php  endif; ?> // İf döngüsünü kullandıysak kapatıyoruz

Gelelim Kodları Tanımaya:

ilk kodumuzu örnek olarak alacak olursak;

array(
'name'=> 'Text box',
'desc'=> 'Enter something here',
'id'=> $prefix. 'text',
'type'=> 'text',
'std'=> 'Default value 1'
),

Detaylara girecek olursak;
‘id’ => $prefix . ‘text’, incelediğimiz zaman buradaki text metaboxda tek olmalıdır. Yani eğer biz Youtube Video URL’sini bu metin kutusundan çekeceksek text yerine youtube yazmalıyız. Hatırlaması kolay ve tek olacaktır.

‘type’ özelliğini inceleyecek olursak buradaki;
text = tek satırlık metin kutusu
textare = metin alanı
radio = tek seçim yapmamızı sağlayan tip
select = açılır kutu

Takvim

 <input type="date" class="datepicker">

Javascript

$(‘.datepicker’).pickadate({
selectMonths: true, // Creates a dropdown to control month
selectYears: 15 // Creates a dropdown of 15 years to control year
});

YAZININ ORJİNALİ:http://buraksah.in/wordpress-yazi-alanina-metabox-nasil-eklerim.html

Reklamlar

Bir Yanıt Bırakın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s