Intereting Posts
Почему изображения не отображаются? Запрос «Категория А» + 1 сообщение из категории «В» – как? Скрытие содержимого категорий только на «Сообщениях» на главной странице? Отдельные реальные пользователи Пользовательское поле 101 WordPress запрашивает данные о вашем FTP, если вы хотите запускать модули автоматического обновления / обновления Как зарегистрировать переменные javascript в wp_localize_script? Импорт массового изображения из папок Как я могу предотвратить обновление следующей версии плагина от одного из файлов? Попытка интегрировать форму кампании Zoho the_author () не работает вне цикла Невозможно получить доступ после обновления Как найти определенную часть кода, которая влияет на ssl? Как показать область содержимого Small Box Inside Content, которая содержит (текст, изображения, ссылки)? Поддержка темы HTML5 для комментариев + форма «novalidate» – как правильно ее обрабатывать?

Как построить несколько мета-ящиков

На данный момент у меня есть отлично работающий скрипт для одного мета-бокса. (Я расскажу подробности ниже). Однако я хочу добавить больше мета-боксов, но у меня возникают проблемы с тем, как я буду склонять или добавлять к этому скрипту, чтобы получить эти результаты.

Мне кто-то объяснил мне, что я должен создать индивидуальный include для каждого метаболизма и по существу воссоздать дубликаты того, что у меня уже есть, изменить мои функции и такие, например: от plib_add_box до plib_add_box_2 и т. Д., Чтобы они не столкнулись. Но это так грубо, и я знаю, что должен быть способ просто добавить его в мой существующий include и по существу сохранить мои данные в формате / сохранить данные одинаковыми.

мои функции.php:

 include("metaboxes/preset-library.php"); //I created an array called $meta_box and set the array key to the relevant post type, in this case post $meta_box['post'] = array( 'id' => 'venue_location', 'title' => 'Venue/Location', 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'name' => 'Venue', 'desc' => 'Venue Name', 'id' => 'venue_info', 'type' => 'text', 'default' => '' ), array( 'name' => 'Location', 'desc' => 'Location of the Venue', 'id' => 'location_info', 'type' => 'text', 'default' => '' ) ) ); add_action('admin_menu', 'plib_add_box'); в include("metaboxes/preset-library.php"); //I created an array called $meta_box and set the array key to the relevant post type, in this case post $meta_box['post'] = array( 'id' => 'venue_location', 'title' => 'Venue/Location', 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'name' => 'Venue', 'desc' => 'Venue Name', 'id' => 'venue_info', 'type' => 'text', 'default' => '' ), array( 'name' => 'Location', 'desc' => 'Location of the Venue', 'id' => 'location_info', 'type' => 'text', 'default' => '' ) ) ); add_action('admin_menu', 'plib_add_box'); 

я включаю:

 //Add meta boxes to post types function plib_add_box() { global $meta_box; foreach($meta_box as $post_type => $value) { add_meta_box($value['id'], $value['title'], 'plib_format_box', $post_type, $value['context'], $value['priority']); } } //Formatting function plib_format_box() { global $meta_box, $post; // verification echo '<input type="hidden" name="plib_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; echo '<table class="form-table">'; foreach ($meta_box[$post->post_type]['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['default']) . '" 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['default']) . '</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>'; } // Save data from meta box function plib_save_data($post_id) { global $meta_box, $post; //Verify if (!wp_verify_nonce($_POST['plib_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[$post->post_type]['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); } } } add_action('save_post', 'plib_save_data'); 

Вы можете создать столько метаболитов, сколько хотите. Используйте функцию для их создания, а затем подключитесь к init. Первая строка должна быть $meta_boxes = array(); затем запустите каждый новый метабокс с помощью $meta_boxes[] = array(

 add_action( 'init', 'prefix_create_metaboxes' ); function prefix_create_metaboxes() { $meta_boxes = array(); $meta_boxes[] = array( 'id' => 'venue_location', 'title' => 'Venue/Location', 'pages' => array('post'), // post type 'context' => 'normal', 'priority' => 'high', array( 'name' => 'Venue', 'desc' => 'Venue Name', 'id' => 'venue_info', 'type' => 'text', 'default' => '' ), array( 'name' => 'Location', 'desc' => 'Location of the Venue', 'id' => 'location_info', 'type' => 'text', 'default' => '' ), ) ); $meta_boxes[] = array( 'id' => 'another_meta_box', 'title' => 'Another Meta Box Title', 'pages' => array( 'post' ), // post type 'context' => 'side', 'priority' => 'low', 'show_names' => true, 'fields' => array( array( 'name' => 'Field Name', 'desc' => 'Field Desc.', 'id' => 'field_id', 'type' => 'text' ), ) ); }