Jake Vanderwerf
4 days ago 747d741293e064a979d7bf6c143ef969ea6d7629
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
use JVBase\managers\Cache;
use JVBase\ui\Navigation;
 
$menu_id = $attributes['menuId'] ?? '';
$collapsed = $attributes['collapsed'] ?? true;
 
// You'd populate this from options, a filter, or however you store menu data
$menu_items = apply_filters('jvbDrawerItems', [], $menu_id);
 
if (empty($menu_items) || empty($menu_id)) {
    return '<p>Please configure the drawer menu in block settings.</p>';
}
 
$cache = Cache::for('drawer');
 
if (!is_front_page()) {
    $menu_items[] = [
        'text'  => 'Home',
        'url'   => home_url(),
        'icon'  => 'house-simple',
    ];
}
$items = array_map(function($item) { return $item['text'];}, $menu_items);
 
$key = $cache->generateKey($items);
$menu =  $cache->remember($key,
function () use ($menu_items, $menu_id, $collapsed) {
    $menu = new Navigation($menu_id);
    $menu->asDrawer($collapsed)->populateFromArray($menu_items);
    return $menu->render();
});
 
global $wp;
 
$current = home_url($wp->request.'/');
echo str_replace($current.'"', $current.'" class="current" aria-current="page"', $menu);