0
0
Wordpressframework~20 mins

Navigation walker classes in Wordpress - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Navigation Walker Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
How does a custom walker class affect WordPress menu output?
You create a custom walker class extending Walker_Nav_Menu and override the start_el method to add a data-id attribute to each menu item. What will be the visible effect on the rendered menu?
Wordpress
class Custom_Walker extends Walker_Nav_Menu {
  function start_el(&$output, $item, $depth = 0, $args = null, $id = 0) {
    $output .= '<li data-id="' . $item->ID . '">' . $item->title . '</li>';
  }
}

wp_nav_menu(array('walker' => new Custom_Walker()));
AThe menu items will be rendered without any <li> tags, only plain text titles.
BEach menu item will have a <li> tag with a data-id attribute matching the menu item's ID.
CThe menu will not render because the start_el method is missing a call to the parent method.
DThe menu items will have an extra <a> tag wrapping the title with the data-id attribute.
Attempts:
2 left
💡 Hint
Think about what the start_el method controls in the menu output.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this custom walker class
Which option contains a syntax error that will cause the custom walker class to fail?
Wordpress
class My_Walker extends Walker_Nav_Menu {
  function start_lvl(&$output, $depth = 0, $args = null) {
    $output .= "<ul class=\"sub-menu\">";
  }
  function end_lvl(&$output, $depth = 0, $args = null) {
    $output .= "</ul>";
  }
  function start_el(&$output, $item, $depth = 0, $args = null, $id = 0) {
    $output .= "<li>" . $item->title . "</li>";
  }
}
AUsing double quotes inside double quotes without escaping in start_lvl method.
BMissing semicolon after $output .= "<ul class='sub-menu'>" in start_lvl method.
CIncorrect method signature for start_el missing the & before $output.
DUsing single quotes inside double quotes is valid; no syntax error here.
Attempts:
2 left
💡 Hint
Check how quotes are used inside strings.
state_output
advanced
2:00remaining
What is the output of this walker modifying menu item classes?
Given this custom walker that adds a class 'highlight' to menu items with a title longer than 5 characters, what will be the class attribute of the menu item with title 'About Us'?
Wordpress
class Highlight_Walker extends Walker_Nav_Menu {
  function start_el(&$output, $item, $depth = 0, $args = null, $id = 0) {
    $classes = empty($item->classes) ? array() : (array) $item->classes;
    if(strlen($item->title) > 5) {
      $classes[] = 'highlight';
    }
    $class_names = join(' ', $classes);
    $output .= '<li class="' . $class_names . '">' . $item->title . '</li>';
  }
}
AThe <li> will have class="" (empty string) because join on empty array returns empty.
BThe <li> will have no class attribute because classes array is empty.
CThe <li> will have class="highlight" only if the title is exactly 5 characters.
DThe <li> will have class="highlight" because 'About Us' has 8 characters.
Attempts:
2 left
💡 Hint
Count the characters in 'About Us' including spaces.
🔧 Debug
advanced
2:00remaining
Why does this custom walker cause a fatal error?
This custom walker class causes a fatal error when used in wp_nav_menu. What is the cause?
Wordpress
class Broken_Walker extends Walker_Nav_Menu {
  function start_el($output, $item, $depth = 0, $args = null, $id = 0) {
    $output .= '<li>' . $item->title . '</li>';
  }
}
AThe $output parameter is missing the & reference, so changes do not persist and cause error.
BThe start_el method is missing a return statement causing fatal error.
CThe class does not call parent::start_el causing infinite recursion.
DThe $item parameter is missing type hint causing fatal error.
Attempts:
2 left
💡 Hint
Check how $output is passed and modified in walker methods.
🧠 Conceptual
expert
2:00remaining
What is the main purpose of a navigation walker class in WordPress?
Choose the best description of what a navigation walker class does in WordPress menus.
AIt automatically generates CSS styles for menus based on theme colors.
BIt handles user permissions to restrict menu visibility based on roles.
CIt controls how the HTML for each menu item and submenu is generated, allowing customization of markup and classes.
DIt manages the database queries to fetch menu items from the WordPress database.
Attempts:
2 left
💡 Hint
Think about what part of the menu output the walker controls.