Código de atualização de widget que não funciona

Pelo que eu posso dizer, a API do widget é bastante simples e simples, ainda que por algum motivo meu código de atualização não esteja efetivando o efeito. Quando eu pressiono [salvar] do backend todos os campos são apagados e nada é realmente salvo.

Quando eu arrasto meu widget para a região da barra lateral, uma input é criada no database para o widget.

1846, 0, 'widget_email-signup', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes' 

Quando eu introduzo valores e salvar, nenhum deles é salvo. Eu interceptei $new_instance e $old_instance durante a chamada para o meu método de atualização e escrevi suas saídas para um arquivo, mas não encontrei nada neles.

Código completo: http://pastebin.com/gtrfuciZ

Método de atualização

 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 (dados encontrados no método de atualização)

 Array ( [title] => [script] => ) Array ( ) 

Solutions Collecting From Web of "Código de atualização de widget que não funciona"

Você está usando get_field_id() para o atributo de nome dos elementos do formulário, mas você deve usar get_field_name() .

Os nomes dos campos são do widget-{$id_base}[{$number}][{$field_name}] formulário widget-{$id_base}[{$number}][{$field_name}] , mas o ID não pode usar [] , então eles são como widget-{$id_base}-{$number}-{$field_name} .