Codice di Aggiornamento del Widget Non Funziona
Da quello che posso vedere, l'API dei widget è abbastanza semplice e diretta, eppure per qualche motivo il mio codice di aggiornamento non ha effetto. Quando premo [salva] dal backend, tutti i campi vengono svuotati e nulla viene effettivamente salvato.
Quando trascino il mio widget nella regione della sidebar, viene creato un record nel database per il widget.
1846, 0, 'widget_email-signup', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'
Quando inserisco i valori e salvo, nessuno viene salvato. Ho intercettato sia $new_instance
che $old_instance
durante la chiamata al mio metodo di aggiornamento e ho scritto i loro output in un file, ma non ho trovato nulla al loro interno.
Codice Completo: http://pastebin.com/gtrfuciZ
Metodo di Aggiornamento
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 (dati trovati nel metodo di aggiornamento)
Array
(
[title] =>
[script] =>
)
Array
( )

Stai utilizzando get_field_id()
per l'attributo name degli elementi del form, ma dovresti usare get_field_name()
.
I nomi dei campi sono nel formato widget-{$id_base}[{$number}][{$field_name}]
, ma gli ID non possono usare []
, quindi sono nel formato widget-{$id_base}-{$number}-{$field_name}
.

get_field_name per il nome del campo. Il codice di esempio è disponibile nel codex: http://codex.wordpress.org/Widgets_API#Example
