wp/wp-includes/class-walker-nav-menu.php
changeset 19 3d72ae0968f4
parent 18 be944660c56a
child 21 48c4eec2b7e6
--- a/wp/wp-includes/class-walker-nav-menu.php	Wed Sep 21 18:19:35 2022 +0200
+++ b/wp/wp-includes/class-walker-nav-menu.php	Tue Sep 27 16:37:53 2022 +0200
@@ -30,7 +30,7 @@
 	 *
 	 * @since 3.0.0
 	 * @todo Decouple this.
-	 * @var array
+	 * @var string[]
 	 *
 	 * @see Walker::$db_fields
 	 */
@@ -106,16 +106,21 @@
 	 *
 	 * @since 3.0.0
 	 * @since 4.4.0 The {@see 'nav_menu_item_args'} filter was added.
+	 * @since 5.9.0 Renamed `$item` to `$data_object` and `$id` to `$current_object_id`
+	 *              to match parent class for PHP 8 named parameter support.
 	 *
 	 * @see Walker::start_el()
 	 *
-	 * @param string   $output Used to append additional content (passed by reference).
-	 * @param WP_Post  $item   Menu item data object.
-	 * @param int      $depth  Depth of menu item. Used for padding.
-	 * @param stdClass $args   An object of wp_nav_menu() arguments.
-	 * @param int      $id     Current item ID.
+	 * @param string   $output            Used to append additional content (passed by reference).
+	 * @param WP_Post  $data_object       Menu item data object.
+	 * @param int      $depth             Depth of menu item. Used for padding.
+	 * @param stdClass $args              An object of wp_nav_menu() arguments.
+	 * @param int      $current_object_id Optional. ID of the current menu item. Default 0.
 	 */
-	public function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
+	public function start_el( &$output, $data_object, $depth = 0, $args = null, $current_object_id = 0 ) {
+		// Restores the more descriptive, specific name for use within this method.
+		$menu_item = $data_object;
+
 		if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
 			$t = '';
 			$n = '';
@@ -125,19 +130,19 @@
 		}
 		$indent = ( $depth ) ? str_repeat( $t, $depth ) : '';
 
-		$classes   = empty( $item->classes ) ? array() : (array) $item->classes;
-		$classes[] = 'menu-item-' . $item->ID;
+		$classes   = empty( $menu_item->classes ) ? array() : (array) $menu_item->classes;
+		$classes[] = 'menu-item-' . $menu_item->ID;
 
 		/**
 		 * Filters the arguments for a single nav menu item.
 		 *
 		 * @since 4.4.0
 		 *
-		 * @param stdClass $args  An object of wp_nav_menu() arguments.
-		 * @param WP_Post  $item  Menu item data object.
-		 * @param int      $depth Depth of menu item. Used for padding.
+		 * @param stdClass $args      An object of wp_nav_menu() arguments.
+		 * @param WP_Post  $menu_item Menu item data object.
+		 * @param int      $depth     Depth of menu item. Used for padding.
 		 */
-		$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
+		$args = apply_filters( 'nav_menu_item_args', $args, $menu_item, $depth );
 
 		/**
 		 * Filters the CSS classes applied to a menu item's list item element.
@@ -145,12 +150,12 @@
 		 * @since 3.0.0
 		 * @since 4.1.0 The `$depth` parameter was added.
 		 *
-		 * @param string[] $classes Array of the CSS classes that are applied to the menu item's `<li>` element.
-		 * @param WP_Post  $item    The current menu item.
-		 * @param stdClass $args    An object of wp_nav_menu() arguments.
-		 * @param int      $depth   Depth of menu item. Used for padding.
+		 * @param string[] $classes   Array of the CSS classes that are applied to the menu item's `<li>` element.
+		 * @param WP_Post  $menu_item The current menu item object.
+		 * @param stdClass $args      An object of wp_nav_menu() arguments.
+		 * @param int      $depth     Depth of menu item. Used for padding.
 		 */
-		$class_names = implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
+		$class_names = implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $menu_item, $args, $depth ) );
 		$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
 
 		/**
@@ -159,26 +164,26 @@
 		 * @since 3.0.1
 		 * @since 4.1.0 The `$depth` parameter was added.
 		 *
-		 * @param string   $menu_id The ID that is applied to the menu item's `<li>` element.
-		 * @param WP_Post  $item    The current menu item.
-		 * @param stdClass $args    An object of wp_nav_menu() arguments.
-		 * @param int      $depth   Depth of menu item. Used for padding.
+		 * @param string   $menu_id   The ID that is applied to the menu item's `<li>` element.
+		 * @param WP_Post  $menu_item The current menu item.
+		 * @param stdClass $args      An object of wp_nav_menu() arguments.
+		 * @param int      $depth     Depth of menu item. Used for padding.
 		 */
-		$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth );
+		$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $menu_item->ID, $menu_item, $args, $depth );
 		$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
 
 		$output .= $indent . '<li' . $id . $class_names . '>';
 
 		$atts           = array();
-		$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
-		$atts['target'] = ! empty( $item->target ) ? $item->target : '';
-		if ( '_blank' === $item->target && empty( $item->xfn ) ) {
+		$atts['title']  = ! empty( $menu_item->attr_title ) ? $menu_item->attr_title : '';
+		$atts['target'] = ! empty( $menu_item->target ) ? $menu_item->target : '';
+		if ( '_blank' === $menu_item->target && empty( $menu_item->xfn ) ) {
 			$atts['rel'] = 'noopener';
 		} else {
-			$atts['rel'] = $item->xfn;
+			$atts['rel'] = $menu_item->xfn;
 		}
-		$atts['href']         = ! empty( $item->url ) ? $item->url : '';
-		$atts['aria-current'] = $item->current ? 'page' : '';
+		$atts['href']         = ! empty( $menu_item->url ) ? $menu_item->url : '';
+		$atts['aria-current'] = $menu_item->current ? 'page' : '';
 
 		/**
 		 * Filters the HTML attributes applied to a menu item's anchor element.
@@ -195,11 +200,11 @@
 		 *     @type string $href         The href attribute.
 		 *     @type string $aria-current The aria-current attribute.
 		 * }
-		 * @param WP_Post  $item  The current menu item.
-		 * @param stdClass $args  An object of wp_nav_menu() arguments.
-		 * @param int      $depth Depth of menu item. Used for padding.
+		 * @param WP_Post  $menu_item The current menu item object.
+		 * @param stdClass $args      An object of wp_nav_menu() arguments.
+		 * @param int      $depth     Depth of menu item. Used for padding.
 		 */
-		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
+		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $menu_item, $args, $depth );
 
 		$attributes = '';
 		foreach ( $atts as $attr => $value ) {
@@ -210,19 +215,19 @@
 		}
 
 		/** This filter is documented in wp-includes/post-template.php */
-		$title = apply_filters( 'the_title', $item->title, $item->ID );
+		$title = apply_filters( 'the_title', $menu_item->title, $menu_item->ID );
 
 		/**
 		 * Filters a menu item's title.
 		 *
 		 * @since 4.4.0
 		 *
-		 * @param string   $title The menu item's title.
-		 * @param WP_Post  $item  The current menu item.
-		 * @param stdClass $args  An object of wp_nav_menu() arguments.
-		 * @param int      $depth Depth of menu item. Used for padding.
+		 * @param string   $title     The menu item's title.
+		 * @param WP_Post  $menu_item The current menu item object.
+		 * @param stdClass $args      An object of wp_nav_menu() arguments.
+		 * @param int      $depth     Depth of menu item. Used for padding.
 		 */
-		$title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
+		$title = apply_filters( 'nav_menu_item_title', $title, $menu_item, $args, $depth );
 
 		$item_output  = $args->before;
 		$item_output .= '<a' . $attributes . '>';
@@ -240,26 +245,27 @@
 		 * @since 3.0.0
 		 *
 		 * @param string   $item_output The menu item's starting HTML output.
-		 * @param WP_Post  $item        Menu item data object.
+		 * @param WP_Post  $menu_item   Menu item data object.
 		 * @param int      $depth       Depth of menu item. Used for padding.
 		 * @param stdClass $args        An object of wp_nav_menu() arguments.
 		 */
-		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
+		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $menu_item, $depth, $args );
 	}
 
 	/**
 	 * Ends the element output, if needed.
 	 *
 	 * @since 3.0.0
+	 * @since 5.9.0 Renamed `$item` to `$data_object` to match parent class for PHP 8 named parameter support.
 	 *
 	 * @see Walker::end_el()
 	 *
-	 * @param string   $output Used to append additional content (passed by reference).
-	 * @param WP_Post  $item   Page data object. Not used.
-	 * @param int      $depth  Depth of page. Not Used.
-	 * @param stdClass $args   An object of wp_nav_menu() arguments.
+	 * @param string   $output      Used to append additional content (passed by reference).
+	 * @param WP_Post  $data_object Menu item data object. Not used.
+	 * @param int      $depth       Depth of page. Not Used.
+	 * @param stdClass $args        An object of wp_nav_menu() arguments.
 	 */
-	public function end_el( &$output, $item, $depth = 0, $args = null ) {
+	public function end_el( &$output, $data_object, $depth = 0, $args = null ) {
 		if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
 			$t = '';
 			$n = '';