Codul de Actualizare al Widget-ului nu Funcționează
Din câte pot vedea, API-ul pentru widget-uri este destul de simplu și direct, dar din anumite motive codul meu de actualizare nu are efect. Când apăs [salvare] din backend, toate câmpurile se golește și nimic nu este salvat de fapt.
Când trag widget-ul meu în regiunea sidebar-ului, o intrare este creată în baza de date pentru widget.
1846, 0, 'widget_email-signup', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'
Când introduc valori și salvez, niciuna nu este salvată. Am interceptat atât $new_instance
cât și $old_instance
în timpul apelului către metoda mea de actualizare și am scris rezultatele într-un fișier, dar nu am găsit nimic în ele.
Cod complet: http://pastebin.com/gtrfuciZ
Metoda de Actualizare
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 (date găsite în metoda de actualizare)
Array
(
[title] =>
[script] =>
)
Array
( )

Folosești get_field_id()
pentru atributul name al elementelor de formular, dar ar trebui să folosești get_field_name()
.
Numele câmpurilor sunt de forma widget-{$id_base}[{$number}][{$field_name}]
, dar id-urile nu pot folosi []
, așa că acestea sunt de forma widget-{$id_base}-{$number}-{$field_name}
.

get_field_name pentru numele câmpului. Exemplu de cod se găsește în codex: http://codex.wordpress.org/Widgets_API#Example
