112 lines
3.1 KiB
PHP
112 lines
3.1 KiB
PHP
|
<?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);
|
||
|
|
||
|
?>
|