Arkadaşlar bir oyun uygulama indirme sitesi açtım, özel alan olarak dosya ismi, boyutu, türü, indirme seçenekleri gibi ayarları yaptım. Ancak her yazıda tekrar tekrar özel alandan seçmektense Metabox denen teknikle bunların hepsini tek çatı altında toplamak istiyorum.
Kısaca hazırladığım özel alanı nasıl metabox olarak yazı alanına eklerim? Biraz kaynak buldum ancak düzenleyemiyorum yeterince bilgim yok bu konuda.
Şimdiden herkese teşekkürler
Özel Alanları Metabox Olarak Yazı Ekranına Eklemek
4
●831
- 06-01-2016, 15:29:42
<?php $prefix = ''; // prefix ön alan adını buraya yazabilirsin ya da boş bırakabilirsin. $meta_box = array( 'id' => 'my-meta-box', 'title' => 'Film Bilgileri', 'page' => 'post', 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'name' => 'Dosya ismin', 'id' => $prefix . 'dosya_ismi', 'type' => 'text', ), array( 'name' => 'Dosya Boyutu', 'desc' => 'Dosyanın Boyutunu yazınız', 'id' => $prefix . 'dosya_boyut', 'type' => 'text', ), array( 'name' => 'Dosya Türü', 'desc' => 'Dosyanın Türünü seçiniz.', 'id' => $prefix . 'dosya_turu', 'type' => 'select', 'options' => array('Tur1', 'tur2', 'tur3') ), array( 'name' => 'İndirme Seçenekleri', 'desc' => 'İndirme seçeneğini seçiniz.', 'id' => $prefix . 'dosya_indirme_secenek', 'type' => 'select', 'options' => array('seçenek1', 'seçenek2', 'seçenek3') ), ) ); 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); } } } ?>bunu metabox.php olarak kullandığın tema klasörüne kaydet. Daha sonra functions.php 'yi aç ve alttaki kodu <?php ?> tagları arasına ekle
include_once("/metabox.php");kısaca bu şekilde kullanım olarakta
aşağıdaki örnekleri inceleyebilirsin.
<?php $dosya_turu = get_post_meta( $post->ID, 'dosya_turul', true ); if ($dosya_turu == "tur1") { echo $dosya_turu;} else if ($dosya_turu == "tur") {echo $dosya_turu; } ya da direk yazdırmak için <?php echo get_post_meta($post->ID, 'metabox id adı', true); ?> - 06-01-2016, 15:44:16Yazan ellerinize sağlık, geceden beri araştırıyorum bir türlü ikisinin bir arada olduğu düzgün kaynak bulamamıştım. Şimdi adım adım inceleyerek yapacağımTheLastKinQ adlı üyeden alıntı: mesajı görüntüle
- 06-01-2016, 15:53:53Kodu kendinize göre geliştirebilirsiniz.takıldığınız birşeyler olursa sormaktan çekinmeyin.Elimden geldiği kadar yardımcı olmaya çalışırım.
- 06-01-2016, 16:02:02metabox.php adında bir dosya oluşturudm içine kodları ekledim ve tema dizinine attım ardından temanın functions.php dosyasına include_once("/metabox.php"); kodunu ekledim ancak sitenin tepesinde şöyle hata aldım:TheLastKinQ adlı üyeden alıntı: mesajı görüntüle

Şimdi bunu araştırıyorum hocam
Ek olarak:
Çok teşekkür ederim hocam sayenizde ne kadardır uğraştığım bir türlü yapamadığım bir şeyi çözdüm çok sağ olun
