--- a/wp/wp-includes/widgets/class-wp-widget-recent-posts.php Tue Oct 22 16:11:46 2019 +0200
+++ b/wp/wp-includes/widgets/class-wp-widget-recent-posts.php Tue Dec 15 13:49:49 2020 +0100
@@ -45,7 +45,8 @@
$args['widget_id'] = $this->id;
}
- $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' );
+ $default_title = __( 'Recent Posts' );
+ $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : $default_title;
/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
@@ -56,18 +57,18 @@
}
$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
- /**
- * Filters the arguments for the Recent Posts widget.
- *
- * @since 3.4.0
- * @since 4.9.0 Added the `$instance` parameter.
- *
- * @see WP_Query::get_posts()
- *
- * @param array $args An array of arguments used to retrieve the recent posts.
- * @param array $instance Array of settings for the current widget.
- */
$r = new WP_Query(
+ /**
+ * Filters the arguments for the Recent Posts widget.
+ *
+ * @since 3.4.0
+ * @since 4.9.0 Added the `$instance` parameter.
+ *
+ * @see WP_Query::get_posts()
+ *
+ * @param array $args An array of arguments used to retrieve the recent posts.
+ * @param array $instance Array of settings for the current widget.
+ */
apply_filters(
'widget_posts_args',
array(
@@ -84,27 +85,52 @@
return;
}
?>
+
<?php echo $args['before_widget']; ?>
+
<?php
if ( $title ) {
echo $args['before_title'] . $title . $args['after_title'];
}
+
+ $format = current_theme_supports( 'html5', 'navigation-widgets' ) ? 'html5' : 'xhtml';
+
+ /** This filter is documented in wp-includes/widgets/class-wp-nav-menu-widget.php */
+ $format = apply_filters( 'navigation_widgets_format', $format );
+
+ if ( 'html5' === $format ) {
+ // The title may be filtered: Strip out HTML and make sure the aria-label is never empty.
+ $title = trim( strip_tags( $title ) );
+ $aria_label = $title ? $title : $default_title;
+ echo '<nav role="navigation" aria-label="' . esc_attr( $aria_label ) . '">';
+ }
?>
+
<ul>
<?php foreach ( $r->posts as $recent_post ) : ?>
<?php
- $post_title = get_the_title( $recent_post->ID );
- $title = ( ! empty( $post_title ) ) ? $post_title : __( '(no title)' );
+ $post_title = get_the_title( $recent_post->ID );
+ $title = ( ! empty( $post_title ) ) ? $post_title : __( '(no title)' );
+ $aria_current = '';
+
+ if ( get_queried_object_id() === $recent_post->ID ) {
+ $aria_current = ' aria-current="page"';
+ }
?>
<li>
- <a href="<?php the_permalink( $recent_post->ID ); ?>"><?php echo $title; ?></a>
+ <a href="<?php the_permalink( $recent_post->ID ); ?>"<?php echo $aria_current; ?>><?php echo $title; ?></a>
<?php if ( $show_date ) : ?>
<span class="post-date"><?php echo get_the_date( '', $recent_post->ID ); ?></span>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
+
<?php
+ if ( 'html5' === $format ) {
+ echo '</nav>';
+ }
+
echo $args['after_widget'];
}
@@ -138,14 +164,20 @@
$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
$show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false;
?>
- <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
+ <p>
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
+ </p>
- <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label>
- <input class="tiny-text" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="number" step="1" min="1" value="<?php echo $number; ?>" size="3" /></p>
+ <p>
+ <label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label>
+ <input class="tiny-text" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="number" step="1" min="1" value="<?php echo $number; ?>" size="3" />
+ </p>
- <p><input class="checkbox" type="checkbox"<?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" />
- <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label></p>
+ <p>
+ <input class="checkbox" type="checkbox"<?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" />
+ <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label>
+ </p>
<?php
}
}