<?php /** * Template part for importing wordpress menus from other sites usin the REST api * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/ * * @package Oficina_de_Suport_theme */ # Config $wordpress_site="https://xarxaprod.cat"; $wordpress_endpoint="https://xarxaprod.cat/wp-json/menus/v1/menus/4"; $items = new ArrayObject; $items[0] = new ArrayObject(); // top level menu items go here if ($wordpress_endpoint) { try { $client = new Client($wordpress_endpoint); $client->setOptions(array("timeout"=>2)); $response = $client->send(); } catch (exception $e) { $response = null; } if ($response) { $response_data = json_decode($response->getBody()); if (!$response->isClientError() && $response_data) { foreach ($response_data as $menu_item) { $lowered_title = strtolower($menu_item->title); $item_url = $menu_item->url; if ($lowered_title == 'login') { // manipulate login url $item_url = "/login"; } $item_title = $menu_item->title; /* if ($lowered_title == 'collections') { if ($wordpress_site) { // change Collections item $item_title = "Project"; $item_url = $wordpress_site; } else { continue; // do not render the Collections item } } */ $item = [ "id" => $menu_item->ID, "title" => $item_title, "url" => $item_url ]; if (!isset($items[$menu_item->menu_item_parent])) { $items[$menu_item->menu_item_parent] = new ArrayObject(); } $items[$menu_item->menu_item_parent][$menu_item->ID] =$item; } } } } if (count($items[0]) == 0) { // we did not retrieve a menu from the wordpress site // let's create a default menu if ($wordpress_site) { $collections_item = [ "id" => 1, "title" => "Collections", "url" => "/" ]; $items[0][1] = $collections_item; } $login_item = [ "id" => 2, "title" => "Login", "url" => "/login" ]; $items[0][2] = $login_item; } //print_r($items); if (!function_exists('render_menu')) { function render_menu($items, $level_id) { if ($level_id == 0) { echo '<ul id="" class="dropdown menu" data-dropdown-menu="dropdown-menu" role="menubar">'. PHP_EOL; } else { echo '<ul class="dropdown menu vertical submenu is-dropdown-submenu first-sub" data-toggle="" data-submenu="" role="">'. PHP_EOL; } foreach ($items[$level_id] as $menu_item) { if ($level_id == 0) { echo '<li id="" class="" role="">'.PHP_EOL; } else { echo '<li id="" class="is-submenu-item is-dropdown-submenu-item" role="">'.PHP_EOL; } echo '<a role="" href="'.$menu_item['url'].'">'.$menu_item['title'].'</a>'.PHP_EOL; if (isset($items[$menu_item['id']])) { render_menu($items, $menu_item['id']); // render sub menu } echo '</li>' . PHP_EOL; } echo '</ul>' . PHP_EOL; } } render_menu($items, 0); ?>