WordPress must-use plugin to register a custom extended front-end menu walker and new wrapper function for BEM styled CSS classes.
You can install this must-use plugin two ways
If you load your dependenies via Composer you can load this plugin with
$ php composer require iantsch/mu-nav-menu
Download/fork this repository and copy the contents of this must-use plugin into wp-content/mu-plugins/
.
If you visit your Plugin section in the wp-admin
area, you should be able to see a newly created category (Must use) plugins
A ready-to-use wrapper function bem_nav_menu
for wp_nav_menu
is included
$args = array(
'base_class' => 'main-menu', // Optional. Default: menu
'theme_location' => 'main-menu'
);
bem_nav_menu($args);
You have an additional argument to name your block to your convenience with the argument base_class
.
Yes, you can easily adapt the functionality of this walker with the already known filter hooks and a few custom ones.
Parameter | Default | Functionality |
---|---|---|
boolean $render |
true | Enables the rendering of an no-JS toggle with radioboxes |
Parameter | Default | Functionality |
---|---|---|
string $title |
title attribute for toggle anchor | To localize this string add a filter. |
Parameter | Default | Functionality |
---|---|---|
string $content |
string of a caret SVG | An additional toggle item for nested menus. |
Parameter | Default | Functionality |
---|---|---|
boolean $render, int $depth, object $item |
false | Enables an automated post type archive sub menu |
Parameter | Default | Functionality |
---|---|---|
boolean $render, int $depth, object $item |
false | Enables an automated posts per term of taxonomy sub menu |
Parameter | Default | Functionality |
---|---|---|
array $query_args |
see below | Adapt the automated sub menu query for $postType |
array(
'post_type' => $item->object,
'posts_per_page' => -1,
'post_parent' => 0,
)
Parameter | Default | Functionality |
---|---|---|
array $query_args |
see below | Adapt the automated sub menu query for $taxonomy |
array(
'post_type' => $taxonomy->object_type,
'posts_per_page' => -1,
'post_parent' => 0,
'tax_query' => array(
array(
'taxonomy' => $item->object,
'field' => 'id',
'terms' => $item->object_id
)
)
)
Parameter | Default | Functionality |
---|---|---|
string $content |
string of html for the mobile toggle | An additional toggle item for mobile menus (burger). |
@iantsch - web developer behind this and other projects.