WordPress Yazı Alanına Metabox Ekleme

WordPress Yazı Alanına Metabox Ekleme

WordPress Yazı Alanına Metabox Ekleme

Metabox Nedir ? Ne İşe Yarar ?

Yazı alanında editörün hemen altında bulunan yapacağımız işlemleri kolaylaştırmaya yarar.Ekstra kutular,butonlar kullanabilme olanağı sağlar.

Örneğin : 

Film Sitemiz var alt yazı seçeneğini gireceksiniz metabox üzerinden hangi seçeneği istiyorsanız onun seçimini yaptıktan sonra konumuza ait alt yazı seçeneği girilebilir.

Örnek Resim

wordpress-yazi-alanina-metabox-ekleme

Kodlama Nasıl Yapılır ?

Functions.php Açıp <?php kodlar ?> şeklinde aşağıdaki kodu yerleştiriyoruz

include_once("yazikutusu.php");

2.İşlem

yazikutusu.php adından bir dosya oluşturup içerisine aşağıdaki kodları ekliyoruz.

<?

$prefix = 'metinbox_';

$meta_box = array(
'id' => 'my-meta-box',
'title' => 'Custom meta box',
'page' => 'post',
'context' => 'normal',
'priority' => 'high',
'fields' => array(
array(
'name' => 'Yaz&#305; Alan&#305;',
'desc' => 'A&#231;&#305;klama',
'id' => $prefix . 'text',
'type' => 'text',
'std' => 'Belirli &#304;&#231;erik'
),
array(
'name' => 'Geni&#351; Yaz&#305;',
'desc' => 'Geni&#351; Yaz&#305; &#304;&#231;erik',
'id' => $prefix . 'textarea',
'type' => 'textarea',
'std' => 'Belirli &#304;&#231;erik'
),
array(
'name' => 'A&#231;&#305;l&#305;r Kutu',
'id' => $prefix . 'select',
'type' => 'select',
'options' => array('&#304;&#231;erik – 1', '&#304;&#231;erik – 2', '&#304;&#231;erik – 3')
),
array(
'name' => 'Se&#231;enekler',
'id' => $prefix . 'secenek',
'type' => 'radio',
'options' => array(
array('name' => 'Se&#231;enek – 1 ', 'value' => 'secbir'),
array('name' => 'Se&#231;enek – 2 ', 'value' => 'seciki')
)
),
array(
'name' => 'Di&#287;er &#214;zellik',
'id' => $prefix . 'videokalitesi',
'type' => 'radio',
'options' => array(
array('name' => 'a ', 'value' => 'a'),
array('name' => 'b ', 'value' => 'b'),
array('name' => 'c ', 'value' => 'c'),
array('name' => 'd ', 'value' => 'd')
)
),

array(
'name' => '&#304;&#351;aretle',
'id' => $prefix . 'checkbox',
'type' => 'checkbox'
)
)
);
add_action('admin_menu', 'mytheme_add_box');

// Add meta box
function mytheme_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
function mytheme_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&#91;'id'&#93;, '">', $field['name'], '</label></th>',
'<td>';
switch ($field['type']) {
case 'text':
echo '<input type="text" name="', $field&#91;'id'&#93;, '" id="', $field&#91;'id'&#93;, '" value="', $meta ? $meta : $field&#91;'std'&#93;, '" size="30" style="width:97%" />',
'<br />', $field['desc'];
break;
case 'textarea':
echo '<textarea name="', $field&#91;'id'&#93;, '" id="', $field&#91;'id'&#93;, '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>',
'<br />', $field['desc'];
break;
case 'select':
echo '<select name="', $field&#91;'id'&#93;, '" id="', $field&#91;'id'&#93;, '">';
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&#91;'id'&#93;, '" value="', $option&#91;'value'&#93;, '"', $meta == $option&#91;'value'&#93; ? ' checked="checked"' : ”, ' />', $option['name'];
}
break;
case 'checkbox':
echo '<input type="checkbox" name="', $field&#91;'id'&#93;, '" id="', $field&#91;'id'&#93;, '"', $meta ? ' checked="checked"' : ”, ' />';
break;
}
echo '<td>',
'</tr>';
}

echo '</table>';
}

add_action('save_post', 'mytheme_save_data');

// Save data from meta box
function mytheme_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.İşlem

Şuanda yaptığımız işlemde Yazı editörümüzün altında bir alan ekledik peki eklediğimiz bu alanı web sitemiz içerisinde nasıl kullanacağız ondan bahsedelim 🙂

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

ÖRNEK KODLAMA İNDİR

Beğen

Yapılan Yorumlar

  1. Valla konu eski ama o kadar yararlı ki yorum yapmazsam size haksızlık olacak diye düşünmeden edemedim.

  2. Merhaba hocam acaba upload ekleme şansımız var mıdır buna ?

    • 5 sene önce

      Bu Sistem içerisinde upload sistemi yok fakat farklı bir sistem de mevcut site içerisinde aratarak bulabilirsiniz, en kısa zamanda bu sistem içerisinde metabox sistemi eklemesi yapıp güncelleme yapacağım lütfen takipte kalın.

  3. 3. İşlemdeki Kodları Yazdığım Zaman Beyaz Sayfa Geliyor Gözükmüyor Anlamadım Sorunu ?

    • 5 sene önce

      Bu Örnek Bir Kodlama işlemi neye göre yapmak istiyorsanız, Ona göre biçimlendirme yapabilirsiniz. Anlamadığınız bir nokta olursa yardımcı olmaya çalışırım.

  4. 6 sene önce

    Php kodu bozuk, çalışmıyor.

    • 6 sene önce

      Ek olarak indirme seçeneği mevcut, ama kodu düzenledim şimdi, Kolay gelsin.

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.