Codul de Actualizare al Widget-ului nu Funcționează

28 dec. 2010, 19:42:34
Vizualizări: 1.67K
Voturi: 3

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
( )
0
Toate răspunsurile la întrebare 1
1

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}.

28 dec. 2010 22:08:56
Comentarii

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

hakre hakre
29 dec. 2010 02:52:38