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 '