new Peptide_Starter_Nav_Walker(), * and the callback_function parameter for the fallback. * Dependencies: Walker_Nav_Menu (WordPress core). * * Extracted from inc/helpers.php in v2.3.0 to keep both files under 300 lines. * * @package peptide-starter */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Navigation Menu Walker — adds active classes. * * What: Renders menu items with an 'active' class for current + ancestor items. * Who calls it: wp_nav_menu() in header.php with walker => new instance. * Dependencies: Walker_Nav_Menu. */ class Peptide_Starter_Nav_Walker extends Walker_Nav_Menu { /** * Render a single menu item. * * @param string $output Item output accumulator (passed by reference). * @param WP_Post $item Menu item data. * @param int $depth Menu depth. * @param stdClass $args Menu arguments. * @param int $id Current item ID. * @return void */ public function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) { $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $classes[] = 'menu-item-' . $item->ID; if ( in_array( 'current-menu-item', $classes, true ) || in_array( 'current-menu-parent', $classes, true ) ) { $classes[] = 'active'; } $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth ); $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; $item_id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth ); $item_id = $item_id ? ' id="' . esc_attr( $item_id ) . '"' : ''; $output .= $indent . '