Código de Actualización de Widget No Funciona
Según lo que puedo ver, la API de widgets es bastante directa y simple, pero por alguna razón mi código de actualización no está teniendo efecto correctamente. Cuando presiono [guardar] desde el backend, todos los campos se vacían y nada se guarda realmente.
Cuando arrastro mi widget a la región de la barra lateral, se crea una entrada en la base de datos para el widget.
1846, 0, 'widget_email-signup', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'
Cuando ingreso valores y guardo, ninguno se guarda. He interceptado tanto $new_instance
como $old_instance
durante la llamada a mi método de actualización y escribí sus salidas en un archivo, pero no encontré nada en ellos.
Código Completo: http://pastebin.com/gtrfuciZ
Método de Actualización
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 (datos encontrados dentro del método de actualización)
Array
(
[title] =>
[script] =>
)
Array
( )

Estás usando get_field_id()
para el atributo name de los elementos del formulario, pero deberías usar get_field_name()
.
Los nombres de los campos tienen el formato widget-{$id_base}[{$number}][{$field_name}]
, pero los ID no pueden usar []
, por lo que son como widget-{$id_base}-{$number}-{$field_name}
.

get_field_name para el nombre del campo. El código de ejemplo está en el codex: http://codex.wordpress.org/Widgets_API#Example
