public static function resolveReferences() { global $bootstrapSettings; foreach ($bootstrapSettings->references as $reference) { if (!isset($reference->path) && !isset($reference->paths)) { $currentValue = get_option($reference->option_name, 0); $postId = findTargetPostId($currentValue); if ($postId != 0) { update_option($reference->option_name, $postId); } } elseif (isset($reference->path) && !isset($reference->paths)) { $path = $reference->path; $currentStruct = get_option($reference->option_name, 0); $currentValue = self::getValue($currentStruct, $path); $postId = findTargetPostId($currentValue); if ($postId != 0) { self::setValue($currentStruct, $path, $postId); update_option($reference->option_name, $currentStruct); } } elseif (isset($reference->paths)) { $currentStruct = get_option($reference->option_name, 0); $paths = $reference->paths; foreach ($paths as $path) { $currentValue = self::getValue($currentStruct, $path); $postId = findTargetPostId($currentValue); if ($postId != 0) { self::setValue($currentStruct, $path, $postId); } } update_option($reference->option_name, $currentStruct); } } }
private function processMenu(&$menu) { $objMenu = wp_get_nav_menu_object($menu->slug); if (!$objMenu) { $id = wp_create_nav_menu($menu->slug); $objMenu = wp_get_nav_menu_object($menu->slug); } $menuId = $objMenu->term_id; $menu->id = $menuId; wp_set_current_user(1); $loggedInmenuItems = wp_get_nav_menu_items($menu->slug); wp_set_current_user(0); $notloggedInmenuItems = wp_get_nav_menu_items($menu->slug); $existingMenuItems = array_merge($loggedInmenuItems, $notloggedInmenuItems); foreach ($existingMenuItems as $existingMenuItem) { $ret = wp_delete_post($existingMenuItem->ID, true); } foreach ($menu->items as &$objMenuItem) { $newTarget = findTargetPostId($objMenuItem->meta->postMeta['_menu_item_object_id'][0]); $parentItem = $this->findMenuItem($objMenuItem->meta->postMeta['_menu_item_menu_item_parent'][0]); $args = ['menu-item-title' => $objMenuItem->meta->post_title, 'menu-item-position' => $objMenuItem->meta->menu_order, 'menu-item-description' => $objMenuItem->meta->post_content, 'menu-item-attr-title' => $objMenuItem->meta->post_title, 'menu-item-status' => $objMenuItem->meta->post_status, 'menu-item-type' => $objMenuItem->meta->postMeta['_menu_item_type'][0], 'menu-item-object' => $objMenuItem->meta->postMeta['_menu_item_object'][0], 'menu-item-object-id' => $newTarget, 'menu-item-url' => $objMenuItem->meta->postMeta['_menu_item_url'][0], 'menu-item-parent-id' => $parentItem]; $ret = wp_update_nav_menu_item($menuId, 0, $args); $objMenuItem->id = $ret; foreach ($objMenuItem->meta->postMeta as $key => $meta) { if (in_array($key, $this->skipped_meta_fields) || substr($key, 0, 1) == '_') { continue; } $val = $meta[0]; update_post_meta($ret, $key, $val); } } }