From 93ce9fc60b0ab381a2d0c1a4dab5511e128e9212 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Mon, 27 Apr 2009 10:56:29 +0000 Subject: [PATCH] Add hooks to WP_Widget, props ceenz, fixes #9651, see #8441 git-svn-id: https://develop.svn.wordpress.org/trunk@11095 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/widgets.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php index 66003c869b..5a86780146 100644 --- a/wp-includes/widgets.php +++ b/wp-includes/widgets.php @@ -164,8 +164,13 @@ class WP_Widget { $this->_set( $widget_args['number'] ); $settings = $this->get_settings(); - if ( array_key_exists( $this->number, $settings ) ) - $this->widget($args, $settings[$this->number]); + if ( array_key_exists( $this->number, $settings ) ) { + $settings = $settings[$this->number]; + // filters the widget's settings, return false to stop displaying the widget + $settings = apply_filters('widget_display_callback', $settings, &$this); + if ( false !== $settings ) + $this->widget($args, $settings); + } } /** Deal with changed settings. @@ -222,6 +227,8 @@ class WP_Widget { else $instance = $this->update($new_instance, array()); + // filters the widget's settings before saving, return false to cancel saving (keep the old settings if updating) + $instance = apply_filters('widget_update_callback', $instance, $new_instance, &$this); if ( false !== $instance ) $all_instances[$number] = $instance; } @@ -250,7 +257,10 @@ class WP_Widget { $instance = $all_instances[ $widget_args['number'] ]; } - return $this->form($instance); + // filters the widget admin form before displaying, return false to stop displaying it + $instance = apply_filters('widget_form_callback', $instance, &$this); + if ( false !== $instance ) + $this->form($instance); } /** Helper function: Registers a single instance. */