X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/256a3b381f63716209b3527d0a14442ae570c283..53f4633144ed68c8b8fb5861f992b5489894a940:/wp-includes/default-widgets.php
diff --git a/wp-includes/default-widgets.php b/wp-includes/default-widgets.php
index 6c6e321f..22e61e53 100644
--- a/wp-includes/default-widgets.php
+++ b/wp-includes/default-widgets.php
@@ -13,37 +13,70 @@
*/
class WP_Widget_Pages extends WP_Widget {
- function __construct() {
+ 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 );
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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,14 +125,16 @@ 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);
-
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ public function widget( $args, $instance ) {
$show_description = isset($instance['description']) ? $instance['description'] : false;
$show_name = isset($instance['name']) ? $instance['name'] : false;
$show_rating = isset($instance['rating']) ? $instance['rating'] : false;
@@ -106,19 +144,34 @@ 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 ) {
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ 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 +189,10 @@ class WP_Widget_Links extends WP_Widget {
return $instance;
}
- function form( $instance ) {
+ /**
+ * @param array $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 ) );
@@ -189,26 +245,34 @@ class WP_Widget_Links extends WP_Widget {
*/
class WP_Widget_Search extends WP_Widget {
- function __construct() {
+ public function __construct() {
$widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site.") );
- parent::__construct('search', __('Search'), $widget_ops);
+ parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops );
}
- function widget( $args, $instance ) {
- extract($args);
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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 ) {
+ /**
+ * @param array $instance
+ */
+ public function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '') );
$title = $instance['title'];
?>
@@ -216,7 +280,12 @@ class WP_Widget_Search extends WP_Widget {
''));
$instance['title'] = strip_tags($new_instance['title']);
@@ -232,37 +301,103 @@ class WP_Widget_Search extends WP_Widget {
*/
class WP_Widget_Archives extends WP_Widget {
- function __construct() {
+ 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);
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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}";
?>
-
+
+
- 'monthly', 'show_post_count' => $c))); ?>
+ 'monthly',
+ 'show_post_count' => $c
+ ) ) );
+?>
'', 'count' => 0, 'dropdown' => '') );
$instance['title'] = strip_tags($new_instance['title']);
@@ -272,7 +407,10 @@ class WP_Widget_Archives extends WP_Widget {
return $instance;
}
- function form( $instance ) {
+ /**
+ * @param array $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,43 +435,66 @@ class WP_Widget_Archives extends WP_Widget {
*/
class WP_Widget_Meta extends WP_Widget {
- function __construct() {
+ 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);
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ public function widget( $args, $instance ) {
+ /** 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 $before_widget;
- if ( $title )
- echo $before_title . $title . $after_title;
+ echo $args['before_widget'];
+ if ( $title ) {
+ echo $args['before_title'] . $title . $args['after_title'];
+ }
?>
- - RSS'); ?>
- - RSS'); ?>
- %s',
- esc_url( __( 'http://wordpress.org/' ) ),
+ - RSS'); ?>
+ - RSS'); ?>
+%s',
+ esc_url( __( 'https://wordpress.org/' ) ),
esc_attr__( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ),
_x( 'WordPress.org', 'meta widget link text' )
- ) ); ?>
-
+ ) );
+
+ wp_meta();
+?>
'' ) );
$title = strip_tags($instance['title']);
?>
@@ -349,31 +510,45 @@ class WP_Widget_Meta extends WP_Widget {
*/
class WP_Widget_Calendar extends WP_Widget {
- function __construct() {
+ 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;
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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 ) {
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
return $instance;
}
- function form( $instance ) {
+ /**
+ * @param array $instance
+ */
+ public function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
$title = strip_tags($instance['title']);
?>
@@ -390,35 +565,58 @@ class WP_Widget_Calendar extends WP_Widget {
*/
class WP_Widget_Text extends WP_Widget {
- function __construct() {
+ 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);
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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']);
@@ -426,7 +624,8 @@ class WP_Widget_Text extends WP_Widget {
-
+
+
/>
'widget_categories', 'description' => __( "A list or dropdown of categories." ) );
parent::__construct('categories', __('Categories'), $widget_ops);
}
- function widget( $args, $instance ) {
- extract( $args );
+ /**
+ * @staticvar bool $first_dropdown
+ *
+ * @param array $args
+ * @param array $instance
+ */
+ public function widget( $args, $instance ) {
+ static $first_dropdown = true;
+
+ /** 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));
+ $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 ) );
?>
@@ -482,16 +712,29 @@ class WP_Widget_Categories extends WP_Widget {
'') );
$title = esc_attr( $instance['title'] );
@@ -532,7 +778,7 @@ class WP_Widget_Categories extends WP_Widget {
*/
class WP_Widget_Recent_Posts extends WP_Widget {
- function __construct() {
+ 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';
@@ -542,14 +788,23 @@ class WP_Widget_Recent_Posts extends WP_Widget {
add_action( 'switch_theme', array($this, 'flush_widget_cache') );
}
- function widget($args, $instance) {
- $cache = wp_cache_get('widget_recent_posts', 'widget');
+ /**
+ * @param array $args
+ * @param array $instance
+ */
+ 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'] ];
@@ -557,20 +812,39 @@ class WP_Widget_Recent_Posts extends WP_Widget {
}
ob_start();
- extract($args);
$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'] ) : 10;
+
+ $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
if ( ! $number )
- $number = 10;
+ $number = 5;
$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
- $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 ) ) );
+ /**
+ * 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
+ ) ) );
+
if ($r->have_posts()) :
?>
-
-
+
+
have_posts() ) : $r->the_post(); ?>
-
@@ -581,18 +855,27 @@ class WP_Widget_Recent_Posts extends WP_Widget {
-
+
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 ) {
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['number'] = (int) $new_instance['number'];
@@ -606,11 +889,17 @@ class WP_Widget_Recent_Posts extends WP_Widget {
return $instance;
}
- function flush_widget_cache() {
+ /**
+ * @access public
+ */
+ public function flush_widget_cache() {
wp_cache_delete('widget_recent_posts', 'widget');
}
- function form( $instance ) {
+ /**
+ * @param array $instance
+ */
+ 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;
@@ -634,7 +923,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
*/
class WP_Widget_Recent_Comments extends WP_Widget {
- function __construct() {
+ 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';
@@ -647,7 +936,18 @@ class WP_Widget_Recent_Comments extends WP_Widget {
add_action( 'transition_comment_status', array($this, 'flush_widget_cache') );
}
- function recent_comments_style() {
+ /**
+ * @access public
+ */
+ 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;
@@ -656,17 +956,30 @@ 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;
@@ -676,39 +989,70 @@ class WP_Widget_Recent_Comments extends WP_Widget {
return;
}
- extract($args, EXTR_SKIP);
- $output = '';
+ $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;
-
- $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;
+ $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 ) {
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['number'] = absint( $new_instance['number'] );
@@ -721,7 +1065,10 @@ class WP_Widget_Recent_Comments extends WP_Widget {
return $instance;
}
- function form( $instance ) {
+ /**
+ * @param array $instance
+ */
+ public function form( $instance ) {
$title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
?>
@@ -741,19 +1088,20 @@ class WP_Widget_Recent_Comments extends WP_Widget {
*/
class WP_Widget_RSS extends WP_Widget {
- function __construct() {
+ 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) {
-
+ /**
+ * @param array $args
+ * @param array $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);
@@ -782,32 +1130,43 @@ 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 = " ";
+ $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) {
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ 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) {
-
- if ( empty($instance) )
+ /**
+ * @param array $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 );
+ }
$instance['number'] = $this->number;
wp_widget_rss_form( $instance );
@@ -838,16 +1197,15 @@ 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 '- ' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '
';
@@ -857,30 +1215,31 @@ function wp_widget_rss_output( $rss, $args = array() ) {
}
echo '';
- foreach ( $rss->get_items(0, $items) as $item ) {
+ foreach ( $rss->get_items( 0, $items ) as $item ) {
$link = $item->get_link();
- while ( stristr($link, 'http') != $link )
- $link = substr($link, 1);
- $link = esc_url(strip_tags($link));
- $title = esc_attr(strip_tags($item->get_title()));
- if ( empty($title) )
- $title = __('Untitled');
-
- $desc = str_replace( array("\n", "\r"), ' ', esc_attr( strip_tags( @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option('blog_charset') ) ) ) );
- $excerpt = wp_html_excerpt( $desc, 360 );
+ while ( stristr( $link, 'http' ) != $link ) {
+ $link = substr( $link, 1 );
+ }
+ $link = esc_url( strip_tags( $link ) );
- // Append ellipsis. Change existing [...] to […].
- if ( '[...]' == substr( $excerpt, -5 ) )
- $excerpt = substr( $excerpt, 0, -5 ) . '[…]';
- elseif ( '[…]' != substr( $excerpt, -10 ) && $desc != $excerpt )
- $excerpt .= ' […]';
+ $title = esc_html( trim( strip_tags( $item->get_title() ) ) );
+ if ( empty( $title ) ) {
+ $title = __( 'Untitled' );
+ }
- $excerpt = esc_html( $excerpt );
+ $desc = @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) );
+ $desc = esc_attr( wp_trim_words( $desc, 55, ' […]' ) );
+ $summary = '';
if ( $show_summary ) {
- $summary = "";
- } else {
- $summary = '';
+ $summary = $desc;
+
+ // Change existing [...] to […].
+ if ( '[...]' == substr( $summary, -5 ) ) {
+ $summary = substr( $summary, 0, -5 ) . '[…]';
+ }
+
+ $summary = '';
}
$date = '';
@@ -903,8 +1262,10 @@ function wp_widget_rss_output( $rss, $args = array() ) {
if ( $link == '' ) {
echo "- $title{$date}{$summary}{$author}
";
+ } elseif ( $show_summary ) {
+ echo "- {$date}{$summary}{$author}
";
} else {
- echo "- {$date}{$summary}{$author}
";
+ echo "- {$date}{$author}
";
}
}
echo '
';
@@ -925,56 +1286,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'] ) :
?>
-
-
+
+
-
-
+
+
-
-
__('Add a custom menu to your sidebar.') );
parent::__construct( 'nav_menu', __('Custom Menu'), $widget_ops );
}
- function widget($args, $instance) {
+ /**
+ * @param array $args
+ * @param array $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'];
@@ -1118,46 +1519,86 @@ 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'];
+ /**
+ * @param array $new_instance
+ * @param array $old_instance
+ * @return array
+ */
+ 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 ) {
+ /**
+ * @param array $instance
+ */
+ public function form( $instance ) {
$title = isset( $instance['title'] ) ? $instance['title'] : '';
$nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
// Get menus
- $menus = wp_get_nav_menus( array( 'orderby' => 'name' ) );
+ $menus = wp_get_nav_menus();
// If no menus exists, direct the user to go and create some.
- if ( !$menus ) {
- echo ''. sprintf( __('No menus have been created yet. Create some.'), admin_url('nav-menus.php') ) .'
';
- return;
- }
?>
-
-
-
-
-
-
-
+ ?>
+ Create some.' ), esc_attr( $url ) ); ?>
+