Codice di Aggiornamento del Widget Non Funziona

28 dic 2010, 19:42:34
Visualizzazioni: 1.67K
Voti: 3

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
( )
0
Tutte le risposte alla domanda 1
1

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

28 dic 2010 22:08:56
Commenti

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

hakre hakre
29 dic 2010 02:52:38