https://github.com/ronaldaug/wp-clean-nav
Wordpress CLEAN menu for tailwindcss or custom UI integration
https://github.com/ronaldaug/wp-clean-nav
Last synced: about 1 month ago
JSON representation
Wordpress CLEAN menu for tailwindcss or custom UI integration
- Host: GitHub
- URL: https://github.com/ronaldaug/wp-clean-nav
- Owner: ronaldaug
- Created: 2021-12-24T07:39:47.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-12-24T08:41:04.000Z (over 3 years ago)
- Last Synced: 2025-02-17T04:00:20.922Z (3 months ago)
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WP clean UI navbar
- No extra classes from Wordpress
- Has active class
- Build with recursive function and it can generate multiple sub-menus ( 2nd level, 3rd level, 4th level ..etc)### Example output
```html
```
-------------------------------------
### Usage
1. [Create `clean-menu` file in your theme like this `classes/clean-menu.php`](#createfile)
2. [Add below code in functions.php](#functions)
3. [Call it somewhere in your wordpress template](#callit)
### 1. Create `clean-menu.php` file in your theme with below code ( CLEAN_Menu ).
```php
menu_item_parent == $parentId) {
$children = buildTree($flatNav, $navItem->ID);
if ($children) {
$navItem->children = $children;
}
$branch[$navItem->menu_order] = $navItem;
unset($navItem);
}
}
return $branch;
}
// get navs
$locations = get_nav_menu_locations();
// get menu items by menu name
$flatMainNav = wp_get_nav_menu_items($locations[$name]);
return buildTree($flatMainNav);
}
/**
* Generate Menu
*
* @param array $menus
* @param string $class
* @return void
*/
public static function generate_menu(array $menus, string $class) : string
{
$sub_menu = '
- ';
foreach ($menus as $menu) {
$children = $menu->children;
$sub_menu .= empty($children) ? self::menu_li($menu) : self::menu_li($menu, $children);
}
return $sub_menu . '
}
/**
* Get single menu li
*
* @param object $menu
* @param array|null $children
* @return void
*/
protected static function menu_li(object $menu, array $children = null) : string
{
$active = $menu->object_id == get_queried_object_id() ? 'class="active"' : '';
if (empty($children)) {
return '
}
return '
'.$menu->title.''. self::generate_menu($children, 'sub-menu') .'
}
}
```
--------------
### 2. Add below code in functions.php
```php
/* -------------------------------------------
Register Menu
---------------------------------------------- */
function register_clean_menu(){
require_once get_template_directory() . '/classes/clean-menu.php';
}
add_action( 'after_setup_theme', 'register_clean_menu' );
register_nav_menus( array(
'primary' => __( 'Top Menu', 'your_theme_name' ),
'secondary' => __( 'Other pages Menu', 'your_theme_name' ),
) );
if (!function_exists('clean_menus')) {
/**
* Get Menu List by menu name
*
* @param string $name
* @return mixed
*/
function clean_menus(string $name){
// get menu array
$menus = CLEAN_menu::get_data($name);
// generate menu UI
return CLEAN_menu::generate_menu($menus,'parent-menu');
}
}
```
--------------
### 3. Call it somewhere in your wordpress template
```php
= clean_menus(); ?>
```