menu_id = !empty($atts['menu_id']) ? $atts['menu_id'] : get_theme_mod('about_nav_menu_id', ''); $this->element_id = !empty($atts['id']) ? $atts['id'] : 'nenghui-about-nav'; $this->css_class = !empty($atts['class']) ? $atts['class'] : ''; } public function get_menu_items() { if (empty($this->menu_id)) { return array(); } // 验证菜单ID是否为有效的数字 $menu_id = intval($this->menu_id); if ($menu_id <= 0) { return array(); } // 检查菜单是否存在 $menu = wp_get_nav_menu_object($menu_id); if (!$menu || is_wp_error($menu)) { return array(); } // 获取菜单项 $menu_items = wp_get_nav_menu_items($menu_id); if (!$menu_items || is_wp_error($menu_items) || !is_array($menu_items)) { return array(); } // 过滤掉无效的菜单项 $menu_items = array_filter($menu_items, function($item) { return $item && !empty($item->title); }); // 处理菜单项数据 $processed_items = array(); foreach ($menu_items as $item) { $processed_items[] = array( 'id' => $item->ID, 'title' => $item->title, 'url' => $item->url, 'target' => $item->target, 'classes' => implode(' ', $item->classes), 'is_current' => $this->is_current_page($item->url) ); } return $processed_items; } private function is_current_page($url) { // 安全地获取当前URL $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; if (empty($request_uri)) { return false; } $current_url = home_url($request_uri); $parsed_url = parse_url($url); $parsed_current = parse_url($current_url); // 确保解析结果是数组 if (!is_array($parsed_url) || !is_array($parsed_current)) { return false; } // 比较路径 if (isset($parsed_url['path']) && isset($parsed_current['path'])) { return rtrim($parsed_url['path'], '/') === rtrim($parsed_current['path'], '/'); } return false; } } } // 初始化配置 $config = new AboutNavConfig($shortcode_atts); $menu_items = $config->get_menu_items(); // 获取自定义器设置 $nav_bg_color = get_theme_mod('about_nav_bg_color', '#ffffff'); $nav_text_color = get_theme_mod('about_nav_text_color', '#333333'); $nav_active_color = get_theme_mod('about_nav_active_color', '#007cba'); $nav_style = get_theme_mod('about_nav_style', 'horizontal'); $nav_position = get_theme_mod('about_nav_position', 'top'); // 如果没有菜单项,显示提示信息 if (!is_array($menu_items) || empty($menu_items)) { $debug_info = ''; if (defined('WP_DEBUG') && WP_DEBUG) { // 获取所有可用菜单进行调试 $all_menus = wp_get_nav_menus(); $available_menus = array(); if (is_array($all_menus)) { foreach ($all_menus as $menu) { $available_menus[] = $menu->term_id . ':' . $menu->name; } } $debug_info = '
调试信息: 当前菜单ID = ' . esc_html($config->menu_id) . '
可用菜单: ' . esc_html(implode(', ', $available_menus)) . '
'; } echo '
请在自定义器中设置 About 导航菜单' . $debug_info . '
'; return; } ?>