Код обновления виджета не работает
Насколько я понимаю, API виджетов довольно прост и понятен, но по какой-то причине мой код обновления не работает должным образом. Когда я нажимаю [сохранить] в админке, все поля очищаются, и ничего не сохраняется.
Когда я перетаскиваю виджет в область сайдбара, запись в базе данных создается.
1846, 0, 'widget_email-signup', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'
Когда я ввожу значения и сохраняю, они не сохраняются. Я перехватил и $new_instance
, и $old_instance
во время вызова метода update и записал их вывод в файл, но не нашел в них никаких данных.
Полный код: http://pastebin.com/gtrfuciZ
Метод Update
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
$instance['script'] = $new_instance['script'];
file_put_contents( '/wp_results.txt', print_r( $old_instance, true ) );
file_put_contents( '/wp_results.txt', print_r( $new_instance, true ), FILE_APPEND );
return $instance;
}
wp_results.txt (данные внутри метода update)
Array
(
[title] =>
[script] =>
)
Array
( )

Вы используете get_field_id()
для атрибута name элементов формы, но следует использовать get_field_name()
.
Имена полей имеют вид widget-{$id_base}[{$number}][{$field_name}]
, но в id нельзя использовать []
, поэтому они выглядят как widget-{$id_base}-{$number}-{$field_name}
.

get_field_name для имени поля. Пример кода можно найти в codex: http://codex.wordpress.org/Widgets_API#Example
