Merhaba arkadaşlar, bugün ne yazsam ne yazsam diye düşünürken aklıma geldi metabox ile ilgili yazı yazayım.
Evet gelelim Metabox’ı yazımıza nasıl ekleriz.
İ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");
Notepad++(Siz hangi kod editörünü kullanıyorsanız onu açın) açıyoruz ve aşağıdaki kodları yapıştırıp metabox.php olarak temanın bulunduğu klasöre kaydediyoruz.
/* * Plugin Name: Metabox * Author: Burak Şahin * Author URI: https://buraksah.in/ */ $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 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['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 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); } } }
Şimdi yazı ekleme sayfasına girdiğimizde aşağıdaki gibi bir tablo karşımıza gelcektir.
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 echo get_post_meta($post->ID, 'ozellikler_dil', true) ?> // Metaboxu çekecek olan kod <?php endif; ?> // İf döngüsünü kullandıysak kapatıyoruz
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
Hata alan arkadaşlar için kullanmış olduğum metabox.php dosyasını paylaşıyorum.
Metabox Dosyasını İndirYukarıda ki metabox dosyasını indirdikten sonra metabox.txt ismini metabox.php olarak değiştirin.
WordPress avukat teması, avukatlar ve hukuk büroları için özel olarak tasarlanmış şablonlardır. Bu temalar, profesyonel…
WiseCP tema özelliği, kullanıcıların platformlarını özelleştirmelerini ve markalarına uygun hale getirmelerini sağlayan önemli bir bileşendir.…
WiseCP Nedir? WiseCP Nedir, Türkiye'nin ilk ve tek yerli bir web barındırma hizmeti, sunucu yönetimi…
Genellikle Windows ve Mac OS işletim sistemli bilgisayarlarda WordPress tema geliştiricileri localhost kurulumu yapmak için…
Her birey zaman zaman şifrelerini güncellemelidir. WordPress yönetici şifresini değiştirmek oldukça basit bir işlemdir, ancak…
Emlak temaları hakkında daha fazla bilgi edinmek için sizleri ücretsiz WordPress emlak teması serimize davet…
Bu web sitesinde çerezler kullanılıyor.