From 6c6fe52a8da02a54688918a7cf4436a6a576997f Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Wed, 18 Oct 2017 00:34:01 +0000 Subject: [PATCH] Widgets: Use a `foreach` loop instead of The Loop to iterate over posts in Recent Posts widget to avoid needing to reset a polluted global `$post`. Props welcher, westonruter. Amends [14607]. See #12320. Fixes #37312. git-svn-id: https://develop.svn.wordpress.org/trunk@41890 602fd350-edb4-49c9-b593-d223f7449a82 --- .../widgets/class-wp-widget-recent-posts.php | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/wp-includes/widgets/class-wp-widget-recent-posts.php b/src/wp-includes/widgets/class-wp-widget-recent-posts.php index c8d19055b4..37843c3a8b 100644 --- a/src/wp-includes/widgets/class-wp-widget-recent-posts.php +++ b/src/wp-includes/widgets/class-wp-widget-recent-posts.php @@ -51,8 +51,9 @@ class WP_Widget_Recent_Posts extends WP_Widget { $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; - if ( ! $number ) + if ( ! $number ) { $number = 5; + } $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false; /** @@ -70,31 +71,35 @@ class WP_Widget_Recent_Posts extends WP_Widget { 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', - 'ignore_sticky_posts' => true + 'ignore_sticky_posts' => true, ), $instance ) ); - if ($r->have_posts()) : + if ( ! $r->have_posts() ) { + return; + } ?> - - - + +