Intereting Posts
Печать строки в нижний колонтитул с использованием параметра wp_footer Как установить лимит почтового слова для пользовательского типа сообщения Как избежать изменения редактора WP <br/> на & nbsp; Как уменьшить время ожидания сеанса входа в WordPress? Перенаправление на пользовательскую страницу WP_Query-фильтр и порядок по мета-упорядочению по неверной объединенной таблице Добавить пользовательские мета-поля, которые только администратор может редактировать Как использовать фильтр TinyMCE? Как отключить плагин для определенной страницы? Как добавить пользовательскую кнопку в панель инструментов редактора сообщений? Как я могу выделить элемент меню панели верхнего уровня, созданный для пользовательской таксономии? do_shortcode выводит строку Использование True Type Fonts (ttf) Удалить действия, добавленные плагином SEO ultimate Plugin Show Sitename в Yoast SEO Title tag

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

У меня есть страница параметров с динамической повторяемой строкой таблицы. В настоящее время есть два поля даты, я добавлю больше на более позднем этапе. Теперь я пытаюсь сохранить данные в таблице параметров базы данных 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 "Сохранение динамически созданных опций"