Warnung: Fehlendes Argument 2 für widget_title-Filter

Basierend auf dieser Frage erhalte ich einen Fehler. Warning: Missing argument 2 for...

Dies passiert bei einigen Widgets, die von Plugins erstellt werden.

– Bearbeiten 1 –

Hier ist ein einfaches Widget, das den Fehler verursacht:

 function my_new_widget_register() { register_widget( 'my_new_widget' ); } add_action('widgets_init', 'my_new_widget_register'); class my_new_widget extends WP_Widget { function my_new_widget() { // Instantiate the parent object parent::__construct( false, 'my_new_widget' ); } function widget( $args, $instance ) { // Widget output extract( $args ); $title = apply_filters('widget_title', $instance['title']); echo $before_widget; echo $title; echo $after_widget; } } 

Der Fehler wird eindeutig durch $title .

Solutions Collecting From Web of "Warnung: Fehlendes Argument 2 für widget_title-Filter"

Sie übergeben dem Filter nicht mehr als Argumente, sodass jeder callback, der mehrere erwartet, nicht verstanden wird. Der core nennt diesen Filter immer so:

 $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base ); 

Aber Sie übergeben nur $instance['title'] . Fügen Sie die fehlenden Parameter hinzu und der Fehler verschwindet.

Wenn Sie das Widget nicht ändern können, ändern Sie die Registrierung für den callback für den Filter und machen Sie die anderen Argumente optional, indem Sie einen Standardwert festlegen:

 add_filter( 'widget_title', 'my_widget_title_filter', 10, 3 ); function my_widget_title_filter( $title, $instance = [], $id_base = '' ) { if ( '' === $id_base ) return $title; // do something with the title, then return $title; } 

Der Fehler Fehlende Argumente ist nach einer kleinen Änderung der Parameter in der function verschwunden:

 function remove_widget_title($title, $instance) 

zu:

 function remove_widget_title($title, $instance = [])