Intereting Posts
Комментарии не отображаются после изменения темы Анализ после-> ID в включенном файле плагина Запрос Не работает как ожидалось Как автоматически обновлять локальный хост после редактирования файлов Изменение постоянных ссылок для определенных страниц Запрос на импорт данных из одной таблицы MultiSite в другую (страницы / подстраницы) Программно изменяющийся шаблон страницы Пользовательский URL таксономии перенаправляется на страницу с тем же именем get_page_by_title () не получает сообщение Минимальное количество слов до того, как сообщение может быть сделано в ожидании обзора Почему мои функции.php вызывают проблемы с белым экраном и медиабиблиотекой? Условные теги – несколько категорий отличный стиль для отдельной страницы Запросить несколько настраиваемых типов сообщений в одном цикле Пользовательские метаполя для специального настраиваемого типа

Сохранение динамически созданных опций

У меня есть страница параметров с динамической повторяемой строкой таблицы. В настоящее время есть два поля даты, я добавлю больше на более позднем этапе. Теперь я пытаюсь сохранить данные в таблице параметров базы данных WP. Я использовал код здесь, и я знаю, что раздел foreach ($options as $option) нуждается в некоторых настройках, но не знаю с чего начать.

PHP:

  $output = '<form method="post" actions="options.php">'; $output .= '<div class="repeatable-wrap"><table class="repeatable-fields-list" style="margin-top:15px;">' . '<th>Start Date</th><th>End Date</th><th></th>'; if (!empty($options)) { $i = 1; foreach ($options as $option) { $output .= '<tr>' . '<td><input type="date" name="rt_options[start_date_'.$i.']"' . 'value="' . $label . '" class="widefat" /></td>' . '<td><input type="date" name="rt_options[end_date_'.$i.']"' . 'value="' . $option['end_' . $i] . '" class="widefat" /></td>' . '<td><a class="repeatable-field-remove button" href="#">Delete</a></td>' . '</tr>'; $i++; } } else { $output .= '<tr>' . '<td><input type="date" name="rt_options[start_date_1]"' . 'value="" class="widefat" /></td>' . '<td><input type="date" name="rt_options[end_date_1]"' . 'value="" class="widefat" /></td>' . '<td><a class="repeatable-field-remove button" href="#">Delete</a></td>' . '</tr>'; } $output .= '</table></div>' . '<div><a class="repeatable-field-add button" href="#">Add Row</a></div>' . '<div style="margin-top:45px;"><input type="submit" class="button button-primary" value="Save changes" /></div></form>'; echo $output; 

JQuery:

 jQuery(function ($) { $(document).ready(function () { $('.repeatable-wrap').find('.repeatable-field-remove:first').css('display', 'none'); $('.repeatable-field-add').click(function () { var theField = $('.repeatable-wrap').find('.repeatable-fields-list tr:last').clone(true); var theLocation = $('.repeatable-wrap').find('.repeatable-fields-list tr:last'); $('input', theField).val('').attr('name', function (index, name) { return name.replace(/(\d+)/, function (fullMatch, n) { return Number(n) + 1; }); }); $('select', theField).val('').attr('name', function (index, name) { return name.replace(/(\d+)/, function (fullMatch, n) { return Number(n) + 1; }); }); theField.insertAfter(theLocation, $(this).closest('div.repeatable-wrap')); var fieldsCount = $('.repeatable-field-remove').length; if (fieldsCount > 1) { $('.repeatable-field-remove').css('display', 'block'); } return false; }); $('.repeatable-field-remove').click(function () { $(this).closest('tr').remove(); var fieldsCount = $('.repeatable-field-remove').length; if (fieldsCount == 1) { $('.repeatable-field-remove').css('display', 'none'); } return false; }); }); 

Solutions Collecting From Web of "Сохранение динамически созданных опций"