Intereting Posts
Удаление повторяющихся пользовательских таксономических терминов из раскрывающегося списка? Как запретить доступ к запросам реферера в Multiste с отображаемыми доменами PHP Предупреждение: неверный аргумент, предоставленный для foreach Отправить письмо пользователю о том, что его сообщение было отклонено Почему темы WordPress по умолчанию задают шрифты во многих местах? API настроек – вход всегда обновляется после проверки Заказ пользовательской категории с get_categories Добавить пользовательский столбец в пользовательской странице редактирования типа сообщения Подключение к медиа-библиотеке для загрузки изображений (НЕ связано с каким-либо сообщением) Page-loop – это циклический контент из пользовательских циклов на одном сайте. Как этого избежать? Опубликовать в социальных сетях Почему `get_permalink ()` создает добавление. Запрос БД без $ post-> filter? У Drupal идет Symfony. Поможет ли WordPress делать то же самое? Breadcrumbs – исключить категории детей Как я могу реализовать «выбрать из существующих тегов» для публикации на передней панели?

Пользовательские мета-ящики: несколько полей в повторяемом поле

Я работаю над мета-поле для событий. Каждое событие имеет свою собственную страницу с мета-полем для составления списка, фонового изображения, URL-адреса страницы билетов и некоторого текста.

Чтобы создать состав, я хотел бы использовать повторяющиеся поля из «Многоразового настраиваемого метабокса» из WP Tuts +: http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part- 1-intro-and-basic-fields / .

Однако я не знаю, как добавить несколько полей в повторяющиеся поля. Это идея:

[Повторяемый]
– Текстовое поле: Название исполнителя
– Текстовое поле: сайт исполнителя
– Флажок: Хедлайнер (Да или нет)
[/ Повторяемые]

Это код из учебника:

function meta_box_callback($fields, $page) { global $post; echo '<input type="hidden" name="'.$page.'_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />'; // Begin the field table and loop echo '<table class="form-table cpt">'; foreach ($fields as $field) { // get value of this field if it exists for this post if ($field['label']) $label = $field['label']; if ($field['desc']) $desc = '<span class="description">'.$field['desc'].'</span>'; if ($field['id']) $id = $field['id']; if ($field['type']) $type = $field['type']; if ($field['value']) $value = $field['value']; if ($field['options']) $options = $field['options']; $meta = get_post_meta($post->ID, $id, true); // begin a table row with echo '<tr> <th class="cpt_title"><label for="'.$id.'">'.$label.'</label></th> <td class="cpt_content">'; switch($field['type']) { case 'repeatable': echo '<a class="repeatable-add button" href="#">+</a> <ul id="'.$field['id'].'-repeatable" class="custom_repeatable">'; $i = 0; if ($meta) { foreach($meta as $row) { echo '<li><span class="sort hndle">|||</span> <input type="text" name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" value="'.$row.'" size="30" /> <a class="repeatable-remove button" href="#">-</a></li>'; $i++; } } else { echo '<li><span class="sort hndle">|||</span> <input type="text" name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" value="" size="30" /> <a class="repeatable-remove button" href="#">-</a></li>'; } echo '</ul> <span class="description">'.$field['desc'].'</span>'; break; } // switch echo '</td></tr>'; } // foreach echo '</table>'; // table } function meta_box_save($post_id, $fields, $page) { // verify nonce if (!wp_verify_nonce($_POST[$page.'_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; } // loop through fields and save the data foreach ($fields as $field) { if($field['type'] == 'tax_select') { // save taxonomies $term = $_POST[$field['id']]; wp_set_object_terms( $post_id, $term, $field['id'] ); } else { // save the rest $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); } } } // foreach } 

Надеюсь, вы, ребята, можете мне помочь :-).

Solutions Collecting From Web of "Пользовательские мета-ящики: несколько полей в повторяемом поле"

Попробуйте Fieldmanager . Он был построен с повторяющимися группами, являющимися приоритетом №1. Ваш новый код будет выглядеть примерно так:

 add_action( 'init', function() { $fm = new Fieldmanager_Group( array( 'name' => 'artists', 'limit' => 0, 'label' => 'New Artist', 'label_macro' => array( 'Artist: %s', 'name' ), 'add_more_label' => 'Add another Artist', 'children' => array( 'name' => new Fieldmanager_Textfield( 'Name' ), 'website' => new Fieldmanager_Link( 'Website' ), 'headliner' => new Fieldmanager_Checkbox( 'Headliner' ) ) ) ); $fm->add_meta_box( 'Artists', array( 'post' ) ); } ); 

Раскрытие информации: компания, с которой я работаю для open-source этого плагина.