X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/8f374b7233bc2815ccc387e448d208c5434eb961..6359b807ff8b4ffa151d8756cdefb861c6c1d4db:/wp-includes/default-widgets.php diff --git a/wp-includes/default-widgets.php b/wp-includes/default-widgets.php index e4856dac..fe87837e 100644 --- a/wp-includes/default-widgets.php +++ b/wp-includes/default-widgets.php @@ -13,37 +13,61 @@ */ class WP_Widget_Pages extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_pages', 'description' => __( 'Your site’s WordPress Pages') ); + public function __construct() { + $widget_ops = array('classname' => 'widget_pages', 'description' => __( 'A list of your site’s Pages.') ); parent::__construct('pages', __('Pages'), $widget_ops); } - function widget( $args, $instance ) { - extract( $args ); + public function widget( $args, $instance ) { + + /** + * Filter the widget title. + * + * @since 2.6.0 + * + * @param string $title The widget title. Default 'Pages'. + * @param array $instance An array of the widget's settings. + * @param mixed $id_base The widget ID. + */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base ); - $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base); $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby']; $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude']; if ( $sortby == 'menu_order' ) $sortby = 'menu_order, post_title'; - $out = wp_list_pages( apply_filters('widget_pages_args', array('title_li' => '', 'echo' => 0, 'sort_column' => $sortby, 'exclude' => $exclude) ) ); - - if ( !empty( $out ) ) { - echo $before_widget; - if ( $title) - echo $before_title . $title . $after_title; + /** + * Filter the arguments for the Pages widget. + * + * @since 2.8.0 + * + * @see wp_list_pages() + * + * @param array $args An array of arguments to retrieve the pages list. + */ + $out = wp_list_pages( apply_filters( 'widget_pages_args', array( + 'title_li' => '', + 'echo' => 0, + 'sort_column' => $sortby, + 'exclude' => $exclude + ) ) ); + + if ( ! empty( $out ) ) { + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } ?> 'post_title', 'title' => '', 'exclude' => '') ); $title = esc_attr( $instance['title'] ); @@ -89,13 +113,12 @@ class WP_Widget_Pages extends WP_Widget { */ class WP_Widget_Links extends WP_Widget { - function __construct() { + public function __construct() { $widget_ops = array('description' => __( "Your blogroll" ) ); parent::__construct('links', __('Links'), $widget_ops); } - function widget( $args, $instance ) { - extract($args, EXTR_SKIP); + public function widget( $args, $instance ) { $show_description = isset($instance['description']) ? $instance['description'] : false; $show_name = isset($instance['name']) ? $instance['name'] : false; @@ -106,19 +129,29 @@ class WP_Widget_Links extends WP_Widget { $order = $orderby == 'rating' ? 'DESC' : 'ASC'; $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1; - $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget); - wp_list_bookmarks(apply_filters('widget_links_args', array( - 'title_before' => $before_title, 'title_after' => $after_title, - 'category_before' => $before_widget, 'category_after' => $after_widget, + $before_widget = preg_replace( '/id="[^"]*"/', 'id="%id"', $args['before_widget'] ); + + /** + * Filter the arguments for the Links widget. + * + * @since 2.6.0 + * + * @see wp_list_bookmarks() + * + * @param array $args An array of arguments to retrieve the links list. + */ + wp_list_bookmarks( apply_filters( 'widget_links_args', array( + 'title_before' => $args['before_title'], 'title_after' => $args['after_title'], + 'category_before' => $before_widget, 'category_after' => $args['after_widget'], 'show_images' => $show_images, 'show_description' => $show_description, 'show_name' => $show_name, 'show_rating' => $show_rating, 'category' => $category, 'class' => 'linkcat widget', 'orderby' => $orderby, 'order' => $order, 'limit' => $limit, - ))); + ) ) ); } - function update( $new_instance, $old_instance ) { + public function update( $new_instance, $old_instance ) { $new_instance = (array) $new_instance; $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 ); foreach ( $instance as $field => $val ) { @@ -136,7 +169,7 @@ class WP_Widget_Links extends WP_Widget { return $instance; } - function form( $instance ) { + public function form( $instance ) { //Defaults $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) ); @@ -150,8 +183,8 @@ class WP_Widget_Links extends WP_Widget { term_id) . '"' - . ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' ) + echo '\n"; } ?> @@ -161,7 +194,7 @@ class WP_Widget_Links extends WP_Widget { - +

@@ -189,26 +222,28 @@ class WP_Widget_Links extends WP_Widget { */ class WP_Widget_Search extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site") ); - parent::__construct('search', __('Search'), $widget_ops); + public function __construct() { + $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site.") ); + parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops ); } - function widget( $args, $instance ) { - extract($args); + public function widget( $args, $instance ) { + + /** This filter is documented in wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } // Use current theme search form if it exists get_search_form(); - echo $after_widget; + echo $args['after_widget']; } - function form( $instance ) { + public function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '') ); $title = $instance['title']; ?> @@ -216,7 +251,7 @@ class WP_Widget_Search extends WP_Widget { '')); $instance['title'] = strip_tags($new_instance['title']); @@ -232,37 +267,94 @@ class WP_Widget_Search extends WP_Widget { */ class WP_Widget_Archives extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your site’s posts') ); + public function __construct() { + $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your site’s Posts.') ); parent::__construct('archives', __('Archives'), $widget_ops); } - function widget( $args, $instance ) { - extract($args); + public function widget( $args, $instance ) { $c = ! empty( $instance['count'] ) ? '1' : '0'; $d = ! empty( $instance['dropdown'] ) ? '1' : '0'; - $title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title'], $instance, $this->id_base); - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Archives' ) : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } if ( $d ) { + $dropdown_id = "{$this->id_base}-dropdown-{$this->number}"; ?> - + +

'', 'count' => 0, 'dropdown' => '') ); $instance['title'] = strip_tags($new_instance['title']); @@ -272,7 +364,7 @@ class WP_Widget_Archives extends WP_Widget { return $instance; } - function form( $instance ) { + public function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') ); $title = strip_tags($instance['title']); $count = $instance['count'] ? 'checked="checked"' : ''; @@ -297,42 +389,55 @@ class WP_Widget_Archives extends WP_Widget { */ class WP_Widget_Meta extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Log in/out, admin, feed and WordPress links") ); + public function __construct() { + $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Login, RSS, & WordPress.org links.") ); parent::__construct('meta', __('Meta'), $widget_ops); } - function widget( $args, $instance ) { - extract($args); - $title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title'], $instance, $this->id_base); + public function widget( $args, $instance ) { - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty($instance['title']) ? __( 'Meta' ) : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } ?> '' ) ); $title = strip_tags($instance['title']); ?> @@ -348,31 +453,34 @@ class WP_Widget_Meta extends WP_Widget { */ class WP_Widget_Calendar extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your site’s posts') ); + public function __construct() { + $widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your site’s Posts.') ); parent::__construct('calendar', __('Calendar'), $widget_ops); } - function widget( $args, $instance ) { - extract($args); - $title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title'], $instance, $this->id_base); - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + public function widget( $args, $instance ) { + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } echo '
'; get_calendar(); echo '
'; - echo $after_widget; + echo $args['after_widget']; } - function update( $new_instance, $old_instance ) { + public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); return $instance; } - function form( $instance ) { + public function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); $title = strip_tags($instance['title']); ?> @@ -389,35 +497,47 @@ class WP_Widget_Calendar extends WP_Widget { */ class WP_Widget_Text extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML')); + public function __construct() { + $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.')); $control_ops = array('width' => 400, 'height' => 350); parent::__construct('text', __('Text'), $widget_ops, $control_ops); } - function widget( $args, $instance ) { - extract($args); + public function widget( $args, $instance ) { + + /** This filter is documented in wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); + + /** + * Filter the content of the Text widget. + * + * @since 2.3.0 + * + * @param string $widget_text The widget content. + * @param WP_Widget $instance WP_Widget instance. + */ $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance ); - echo $before_widget; - if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?> + echo $args['before_widget']; + if ( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } ?>
'', 'text' => '' ) ); $title = strip_tags($instance['title']); $text = esc_textarea($instance['text']); @@ -439,39 +559,65 @@ class WP_Widget_Text extends WP_Widget { */ class WP_Widget_Categories extends WP_Widget { - function __construct() { - $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories" ) ); + public function __construct() { + $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories." ) ); parent::__construct('categories', __('Categories'), $widget_ops); } - function widget( $args, $instance ) { - extract( $args ); + public function widget( $args, $instance ) { + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base ); - $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base); $c = ! empty( $instance['count'] ) ? '1' : '0'; $h = ! empty( $instance['hierarchical'] ) ? '1' : '0'; $d = ! empty( $instance['dropdown'] ) ? '1' : '0'; - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } - $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h); + $cat_args = array( + 'orderby' => 'name', + 'show_count' => $c, + 'hierarchical' => $h + ); if ( $d ) { - $cat_args['show_option_none'] = __('Select Category'); - wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args)); + static $first_dropdown = true; + + $dropdown_id = ( $first_dropdown ) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}"; + $first_dropdown = false; + + echo ''; + + $cat_args['show_option_none'] = __( 'Select Category' ); + $cat_args['id'] = $dropdown_id; + + /** + * Filter the arguments for the Categories widget drop-down. + * + * @since 2.8.0 + * + * @see wp_dropdown_categories() + * + * @param array $cat_args An array of Categories widget drop-down arguments. + */ + wp_dropdown_categories( apply_filters( 'widget_categories_dropdown_args', $cat_args ) ); ?> @@ -481,16 +627,24 @@ class WP_Widget_Categories extends WP_Widget { '') ); $title = esc_attr( $instance['title'] ); @@ -531,24 +685,29 @@ class WP_Widget_Categories extends WP_Widget { */ class WP_Widget_Recent_Posts extends WP_Widget { - function __construct() { - $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your site") ); + public function __construct() { + $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "Your site’s most recent Posts.") ); parent::__construct('recent-posts', __('Recent Posts'), $widget_ops); $this->alt_option_name = 'widget_recent_entries'; - add_action( 'save_post', array(&$this, 'flush_widget_cache') ); - add_action( 'deleted_post', array(&$this, 'flush_widget_cache') ); - add_action( 'switch_theme', array(&$this, 'flush_widget_cache') ); + add_action( 'save_post', array($this, 'flush_widget_cache') ); + add_action( 'deleted_post', array($this, 'flush_widget_cache') ); + add_action( 'switch_theme', array($this, 'flush_widget_cache') ); } - function widget($args, $instance) { - $cache = wp_cache_get('widget_recent_posts', 'widget'); + public function widget($args, $instance) { + $cache = array(); + if ( ! $this->is_preview() ) { + $cache = wp_cache_get( 'widget_recent_posts', 'widget' ); + } - if ( !is_array($cache) ) + if ( ! is_array( $cache ) ) { $cache = array(); + } - if ( ! isset( $args['widget_id'] ) ) + if ( ! isset( $args['widget_id'] ) ) { $args['widget_id'] = $this->id; + } if ( isset( $cache[ $args['widget_id'] ] ) ) { echo $cache[ $args['widget_id'] ]; @@ -556,37 +715,69 @@ class WP_Widget_Recent_Posts extends WP_Widget { } ob_start(); - extract($args); - $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base); - if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) ) - $number = 10; + $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' ); + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; + if ( ! $number ) + $number = 5; + $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false; + + /** + * Filter the arguments for the Recent Posts widget. + * + * @since 3.4.0 + * + * @see WP_Query::get_posts() + * + * @param array $args An array of arguments used to retrieve the recent posts. + */ + $r = new WP_Query( apply_filters( 'widget_posts_args', array( + 'posts_per_page' => $number, + 'no_found_rows' => true, + 'post_status' => 'publish', + 'ignore_sticky_posts' => true + ) ) ); - $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); if ($r->have_posts()) : ?> - - + + - + is_preview() ) { + $cache[ $args['widget_id'] ] = ob_get_flush(); + wp_cache_set( 'widget_recent_posts', $cache, 'widget' ); + } else { + ob_end_flush(); + } } - function update( $new_instance, $old_instance ) { + public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['number'] = (int) $new_instance['number']; + $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false; $this->flush_widget_cache(); $alloptions = wp_cache_get( 'alloptions', 'options' ); @@ -596,19 +787,23 @@ class WP_Widget_Recent_Posts extends WP_Widget { return $instance; } - function flush_widget_cache() { + public function flush_widget_cache() { wp_cache_delete('widget_recent_posts', 'widget'); } - function form( $instance ) { - $title = isset($instance['title']) ? esc_attr($instance['title']) : ''; - $number = isset($instance['number']) ? absint($instance['number']) : 5; + public function form( $instance ) { + $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; + $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; + $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false; ?> -

-

+

+

-

-

+

+

+ +

id="get_field_id( 'show_date' ); ?>" name="get_field_name( 'show_date' ); ?>" /> +

'widget_recent_comments', 'description' => __( 'The most recent comments' ) ); + public function __construct() { + $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'Your site’s most recent comments.' ) ); parent::__construct('recent-comments', __('Recent Comments'), $widget_ops); $this->alt_option_name = 'widget_recent_comments'; if ( is_active_widget(false, false, $this->id_base) ) - add_action( 'wp_head', array(&$this, 'recent_comments_style') ); + add_action( 'wp_head', array($this, 'recent_comments_style') ); - add_action( 'comment_post', array(&$this, 'flush_widget_cache') ); - add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') ); + add_action( 'comment_post', array($this, 'flush_widget_cache') ); + add_action( 'edit_comment', array($this, 'flush_widget_cache') ); + add_action( 'transition_comment_status', array($this, 'flush_widget_cache') ); } - function recent_comments_style() { + public function recent_comments_style() { + + /** + * Filter the Recent Comments default widget styles. + * + * @since 3.1.0 + * + * @param bool $active Whether the widget is active. Default true. + * @param string $id_base The widget ID. + */ if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876 || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) ) return; @@ -641,17 +846,20 @@ class WP_Widget_Recent_Comments extends WP_Widget { is_preview() ) { + $cache = wp_cache_get('widget_recent_comments', 'widget'); + } + if ( ! is_array( $cache ) ) { $cache = array(); + } if ( ! isset( $args['widget_id'] ) ) $args['widget_id'] = $this->id; @@ -661,33 +869,65 @@ class WP_Widget_Recent_Comments extends WP_Widget { return; } - extract($args, EXTR_SKIP); - $output = ''; - $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Recent Comments' ) : $instance['title'], $instance, $this->id_base ); - - if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) ) - $number = 5; - - $comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) ); - $output .= $before_widget; - if ( $title ) - $output .= $before_title . $title . $after_title; + $output = ''; + + $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments' ); + + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; + if ( ! $number ) + $number = 5; + + /** + * Filter the arguments for the Recent Comments widget. + * + * @since 3.4.0 + * + * @see WP_Comment_Query::query() for information on accepted arguments. + * + * @param array $comment_args An array of arguments used to retrieve the recent comments. + */ + $comments = get_comments( apply_filters( 'widget_comments_args', array( + 'number' => $number, + 'status' => 'approve', + 'post_status' => 'publish' + ) ) ); + + $output .= $args['before_widget']; + if ( $title ) { + $output .= $args['before_title'] . $title . $args['after_title']; + } $output .= ''; - $output .= $after_widget; + $output .= $args['after_widget']; echo $output; - $cache[$args['widget_id']] = $output; - wp_cache_set('widget_recent_comments', $cache, 'widget'); + + if ( ! $this->is_preview() ) { + $cache[ $args['widget_id'] ] = $output; + wp_cache_set( 'widget_recent_comments', $cache, 'widget' ); + } } - function update( $new_instance, $old_instance ) { + public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['number'] = absint( $new_instance['number'] ); @@ -700,15 +940,15 @@ class WP_Widget_Recent_Comments extends WP_Widget { return $instance; } - function form( $instance ) { - $title = isset($instance['title']) ? esc_attr($instance['title']) : ''; - $number = isset($instance['number']) ? absint($instance['number']) : 5; + public function form( $instance ) { + $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; + $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; ?> -

-

+

+

-

-

+

+

__('Entries from any RSS or Atom feed') ); + public function __construct() { + $widget_ops = array( 'description' => __('Entries from any RSS or Atom feed.') ); $control_ops = array( 'width' => 400, 'height' => 200 ); parent::__construct( 'rss', __('RSS'), $widget_ops, $control_ops ); } - function widget($args, $instance) { + public function widget($args, $instance) { if ( isset($instance['error']) && $instance['error'] ) return; - extract($args, EXTR_SKIP); - $url = ! empty( $instance['url'] ) ? $instance['url'] : ''; while ( stristr($url, 'http') != $url ) $url = substr($url, 1); @@ -761,29 +999,32 @@ class WP_Widget_RSS extends WP_Widget { if ( empty($title) ) $title = empty($desc) ? __('Unknown Feed') : $desc; - $title = apply_filters('widget_title', $title, $instance, $this->id_base); + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + $url = esc_url(strip_tags($url)); $icon = includes_url('images/rss.png'); if ( $title ) - $title = "RSS $title"; + $title = "RSS $title"; - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } wp_widget_rss_output( $rss, $instance ); - echo $after_widget; + echo $args['after_widget']; if ( ! is_wp_error($rss) ) $rss->__destruct(); unset($rss); } - function update($new_instance, $old_instance) { + public function update($new_instance, $old_instance) { $testurl = ( isset( $new_instance['url'] ) && ( !isset( $old_instance['url'] ) || ( $new_instance['url'] != $old_instance['url'] ) ) ); return wp_widget_rss_process( $new_instance, $testurl ); } - function form($instance) { + public function form($instance) { if ( empty($instance) ) $instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 ); @@ -817,49 +1058,49 @@ function wp_widget_rss_output( $rss, $args = array() ) { return; } - $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0 ); + $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'items' => 0 ); $args = wp_parse_args( $args, $default_args ); - extract( $args, EXTR_SKIP ); - $items = (int) $items; + $items = (int) $args['items']; if ( $items < 1 || 20 < $items ) $items = 10; - $show_summary = (int) $show_summary; - $show_author = (int) $show_author; - $show_date = (int) $show_date; + $show_summary = (int) $args['show_summary']; + $show_author = (int) $args['show_author']; + $show_date = (int) $args['show_date']; if ( !$rss->get_item_quantity() ) { - echo ''; + echo ''; $rss->__destruct(); unset($rss); return; } echo ''; @@ -904,56 +1147,58 @@ function wp_widget_rss_output( $rss, $args = array() ) { * @param array $inputs Override default display options. */ function wp_widget_rss_form( $args, $inputs = null ) { - $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true ); $inputs = wp_parse_args( $inputs, $default_inputs ); - extract( $args ); - extract( $inputs, EXTR_SKIP); - $number = esc_attr( $number ); - $title = esc_attr( $title ); - $url = esc_url( $url ); - $items = (int) $items; - if ( $items < 1 || 20 < $items ) - $items = 10; - $show_summary = (int) $show_summary; - $show_author = (int) $show_author; - $show_date = (int) $show_date; + $args['number'] = esc_attr( $args['number'] ); + $args['title'] = isset( $args['title'] ) ? esc_attr( $args['title'] ) : ''; + $args['url'] = isset( $args['url'] ) ? esc_url( $args['url'] ) : ''; + $args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0; + + if ( $args['items'] < 1 || 20 < $args['items'] ) { + $args['items'] = 10; + } - if ( !empty($error) ) - echo '

' . sprintf( __('RSS Error: %s'), $error) . '

'; + $args['show_summary'] = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary']; + $args['show_author'] = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author']; + $args['show_date'] = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date']; + + if ( ! empty( $args['error'] ) ) { + echo '

' . sprintf( __( 'RSS Error: %s' ), $args['error'] ) . '

'; + } if ( $inputs['url'] ) : ?> -

-

+

+

-

-

+

+

-

- $i"; + for ( $i = 1; $i <= 20; ++$i ) { + echo ""; + } ?>

-

/> -

+

/> +

-

/> -

+

/> +

-

/> -

+

/> +

- + __( "Your most used tags in cloud format") ); + public function __construct() { + $widget_ops = array( 'description' => __( "A cloud of your most used tags.") ); parent::__construct('tag_cloud', __('Tag Cloud'), $widget_ops); } - function widget( $args, $instance ) { - extract($args); + public function widget( $args, $instance ) { $current_taxonomy = $this->_get_current_taxonomy($instance); if ( !empty($instance['title']) ) { $title = $instance['title']; @@ -1029,24 +1273,42 @@ class WP_Widget_Tag_Cloud extends WP_Widget { $title = $tax->labels->name; } } - $title = apply_filters('widget_title', $title, $instance, $this->id_base); - echo $before_widget; - if ( $title ) - echo $before_title . $title . $after_title; + /** This filter is documented in wp-includes/default-widgets.php */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + echo $args['before_widget']; + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } echo '
'; - wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => $current_taxonomy) ) ); + + /** + * Filter the taxonomy used in the Tag Cloud widget. + * + * @since 2.8.0 + * @since 3.0.0 Added taxonomy drop-down. + * + * @see wp_tag_cloud() + * + * @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'. + */ + wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array( + 'taxonomy' => $current_taxonomy + ) ) ); + echo "
\n"; - echo $after_widget; + echo $args['after_widget']; } - function update( $new_instance, $old_instance ) { + public function update( $new_instance, $old_instance ) { + $instance = array(); $instance['title'] = strip_tags(stripslashes($new_instance['title'])); $instance['taxonomy'] = stripslashes($new_instance['taxonomy']); return $instance; } - function form( $instance ) { + public function form( $instance ) { $current_taxonomy = $this->_get_current_taxonomy($instance); ?>

@@ -1063,7 +1325,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {

__('Use this widget to add one of your custom menus as a widget.') ); + public function __construct() { + $widget_ops = array( 'description' => __('Add a custom menu to your sidebar.') ); parent::__construct( 'nav_menu', __('Custom Menu'), $widget_ops ); } - function widget($args, $instance) { + public function widget($args, $instance) { // Get menu $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false; if ( !$nav_menu ) return; + /** This filter is documented in wp-includes/default-widgets.php */ $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); echo $args['before_widget']; @@ -1097,23 +1360,47 @@ class WP_Widget_Tag_Cloud extends WP_Widget { if ( !empty($instance['title']) ) echo $args['before_title'] . $instance['title'] . $args['after_title']; - wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) ); + $nav_menu_args = array( + 'fallback_cb' => '', + 'menu' => $nav_menu + ); + + /** + * Filter the arguments for the Custom Menu widget. + * + * @since 4.2.0 + * + * @param array $nav_menu_args { + * An array of arguments passed to wp_nav_menu() to retrieve a custom menu. + * + * @type callback|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty. + * @type mixed $menu Menu ID, slug, or name. + * } + * @param stdClass $nav_menu Nav menu object for the current menu. + * @param array $args Display arguments for the current widget. + */ + wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args ) ); echo $args['after_widget']; } - function update( $new_instance, $old_instance ) { - $instance['title'] = strip_tags( stripslashes($new_instance['title']) ); - $instance['nav_menu'] = (int) $new_instance['nav_menu']; + public function update( $new_instance, $old_instance ) { + $instance = array(); + if ( ! empty( $new_instance['title'] ) ) { + $instance['title'] = strip_tags( stripslashes($new_instance['title']) ); + } + if ( ! empty( $new_instance['nav_menu'] ) ) { + $instance['nav_menu'] = (int) $new_instance['nav_menu']; + } return $instance; } - function form( $instance ) { + public function form( $instance ) { $title = isset( $instance['title'] ) ? $instance['title'] : ''; $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : ''; // Get menus - $menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); + $menus = wp_get_nav_menus(); // If no menus exists, direct the user to go and create some. if ( !$menus ) { @@ -1123,15 +1410,17 @@ class WP_Widget_Tag_Cloud extends WP_Widget { ?>

- +

@@ -1158,7 +1447,8 @@ function wp_widgets_init() { register_widget('WP_Widget_Archives'); - register_widget('WP_Widget_Links'); + if ( get_option( 'link_manager_enabled' ) ) + register_widget('WP_Widget_Links'); register_widget('WP_Widget_Meta'); @@ -1178,7 +1468,12 @@ function wp_widgets_init() { register_widget('WP_Nav_Menu_Widget'); - do_action('widgets_init'); + /** + * Fires after all default WordPress widgets have been registered. + * + * @since 2.2.0 + */ + do_action( 'widgets_init' ); } add_action('init', 'wp_widgets_init', 1);