wp/wp-includes/class-walker-page.php
changeset 9 177826044cd9
parent 7 cf61fcea0001
child 16 a86126ab1dd4
--- a/wp/wp-includes/class-walker-page.php	Mon Oct 14 18:06:33 2019 +0200
+++ b/wp/wp-includes/class-walker-page.php	Mon Oct 14 18:28:13 2019 +0200
@@ -35,7 +35,10 @@
 	 * @see Walker::$db_fields
 	 * @todo Decouple this.
 	 */
-	public $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' );
+	public $db_fields = array(
+		'parent' => 'post_parent',
+		'id'     => 'ID',
+	);
 
 	/**
 	 * Outputs the beginning of the current level in the tree before elements are output.
@@ -57,7 +60,7 @@
 			$t = '';
 			$n = '';
 		}
-		$indent = str_repeat( $t, $depth );
+		$indent  = str_repeat( $t, $depth );
 		$output .= "{$n}{$indent}<ul class='children'>{$n}";
 	}
 
@@ -81,7 +84,7 @@
 			$t = '';
 			$n = '';
 		}
-		$indent = str_repeat( $t, $depth );
+		$indent  = str_repeat( $t, $depth );
 		$output .= "{$indent}</ul>{$n}";
 	}
 
@@ -127,7 +130,7 @@
 			} elseif ( $_current_page && $page->ID == $_current_page->post_parent ) {
 				$css_class[] = 'current_page_parent';
 			}
-		} elseif ( $page->ID == get_option('page_for_posts') ) {
+		} elseif ( $page->ID == get_option( 'page_for_posts' ) ) {
 			$css_class[] = 'current_page_parent';
 		}
 
@@ -138,14 +141,14 @@
 		 *
 		 * @see wp_list_pages()
 		 *
-		 * @param array   $css_class    An array of CSS classes to be applied
-		 *                              to each list item.
-		 * @param WP_Post $page         Page data object.
-		 * @param int     $depth        Depth of page, used for padding.
-		 * @param array   $args         An array of arguments.
-		 * @param int     $current_page ID of the current page.
+		 * @param string[] $css_class    An array of CSS classes to be applied to each list item.
+		 * @param WP_Post  $page         Page data object.
+		 * @param int      $depth        Depth of page, used for padding.
+		 * @param array    $args         An array of arguments.
+		 * @param int      $current_page ID of the current page.
 		 */
 		$css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
+		$css_classes = $css_classes ? ' class="' . esc_attr( $css_classes ) . '"' : '';
 
 		if ( '' === $page->post_title ) {
 			/* translators: %d: ID of a post */
@@ -153,10 +156,11 @@
 		}
 
 		$args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
-		$args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after'];
+		$args['link_after']  = empty( $args['link_after'] ) ? '' : $args['link_after'];
 
-		$atts = array();
-		$atts['href'] = get_permalink( $page->ID );
+		$atts                 = array();
+		$atts['href']         = get_permalink( $page->ID );
+		$atts['aria-current'] = ( $page->ID == $current_page ) ? 'page' : '';
 
 		/**
 		 * Filters the HTML attributes applied to a page menu item's anchor element.
@@ -166,7 +170,8 @@
 		 * @param array $atts {
 		 *     The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored.
 		 *
-		 *     @type string $href The href attribute.
+		 *     @type string $href         The href attribute.
+		 *     @type string $aria_current The aria-current attribute.
 		 * }
 		 * @param WP_Post $page         Page data object.
 		 * @param int     $depth        Depth of page, used for padding.
@@ -178,13 +183,13 @@
 		$attributes = '';
 		foreach ( $atts as $attr => $value ) {
 			if ( ! empty( $value ) ) {
-				$value = esc_attr( $value );
+				$value       = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
 				$attributes .= ' ' . $attr . '="' . $value . '"';
 			}
 		}
 
 		$output .= $indent . sprintf(
-			'<li class="%s"><a%s>%s%s%s</a>',
+			'<li%s><a%s>%s%s%s</a>',
 			$css_classes,
 			$attributes,
 			$args['link_before'],
@@ -201,7 +206,7 @@
 			}
 
 			$date_format = empty( $args['date_format'] ) ? '' : $args['date_format'];
-			$output .= " " . mysql2date( $date_format, $time );
+			$output     .= ' ' . mysql2date( $date_format, $time );
 		}
 	}