wp_dropdown_pages in Widget-Form

Ich habe eine kleine Eigenart irgendwo in meiner Widgetform. Nach dem Speichern der Widget-Instanz wird das Formular mit der falsch ausgewählten “Seiten-ID” aus der Eingabe wp_dropdown_pages aktualisiert. Wenn ich die Widgets-Seite aktualisiere, wird die richtige gespeicherte Seiten-ID im Dropdown-Menü ausgewählt. Hier ist der Teil des Codes:

public function form( $instance ) { if( isset( $instance['page_id'] ) ) { $page_id = $instance['page_id']; } else { $page_id = 0; } ?> 

Select a post to display it's excerpt

$this->get_field_id('page_id'), 'name' => $this->get_field_name('page_id'), 'selected' => $page_id ); wp_dropdown_pages( $args ); } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['page_id'] = ( !empty( $new_instance['page_id'] ) ) ? (int)$instance['page_id'] : ''; return $instance; }

Also wird error_logging $ page_id 0 ausgeben, wenn ich save drücke, aber wenn ich mich aktualisiere, wird $ page_id die korrekte Seiten-ID sein, die ich brauche.

Irgendwelche Gedanken?

Solutions Collecting From Web of "wp_dropdown_pages in Widget-Form"

Ich habe keine Ahnung, warum, aber das Ändern der Update-function auf den folgenden schien den Trick zu tun:

 public function update( $new_instance, $old_instance ) { $instance = $old_instance; if( isset( $new_instance['page_id'] ) ) { if( $new_instance == '' ) { $instance['page_id'] = ''; } else if ( (int) $new_instance['page_id'] > 0 ) { $instance['page_id'] = (int) $new_instance['page_id']; } } return $instance; }