Intereting Posts
как использовать ajax в области администрирования плагина? Вставка кода в сообщение WordPress – использование LFs Клонирование wordpress intsall на mac Сохранение пользовательского значения в основное содержание сообщения Получить пользовательские классы в меню навигации WordPress Удаление номера в категории slug Как использовать собственный домен? проблема с has_post_thumpnail в цикле foreach Проблема с одиночной страницей для моего пользовательского сообщения shortcodes – стиль или изменение / удаление квадратных скобок? Как изменить размер изображений WordPress при загрузке до определенной высоты и ширины без обрезки Следует ли сбросить 'setup_postdata ()' с помощью 'wp_reset_postdata ()'? Получить идентификатор сообщения в окне редактирования администратора, иначе сгенерируйте его? Изменение порядка создания группы Buddypress Group Выдержки автоматически удаляют пространство абзаца

Добавить ссылку в конец wp_nav_menu

Мне нужно добавить условный пункт меню, например «/ at» или «/ de» или «/ ch» в wp_nav_menu . Поскольку ссылка условна (в зависимости от страны, на которой просматривается веб-сайт), ее нельзя добавить из бэкэнд, а вместо этого нужно жестко закодировать.

Как добавить эту условную ссылку в конце того, что wp_nav_menu ? Спасибо.

Это то, что сработало для меня (на основе этого ). Надеюсь, это будет полезно и для других.

 add_filter( 'wp_nav_menu_items','primary_navigation', 10, 2 ); function primary_navigation( $items, $args ) { if( $args->theme_location == 'primary_navigation' ) { if ( ! isset( $_SESSION['menu_country'] ) ) { $country = json_decode( file_get_contents( "http://freegeoip.net/json/" . esc_url( $_SERVER['REMOTE_ADDR'] ) ) ); $_SESSION['menu_country'] = strtolower( $country->country_code ); } $items .= '<li class="menu-produkte"><a href="/' . esc_url( $_SESSION['menu_country'] ) .'/shop">Produkte</a></li>'; } return $items; } 

Вы также можете сделать это с помощью items_wrap если хотите. Не проверял это, но может быть что-то вроде:

 if ( !isset( $_SESSION['menu_country'] ) ) { $country = json_decode( file_get_contents( "http://freegeoip.net/json/" . esc_url( $_SERVER['REMOTE_ADDR'] ) ) ); $_SESSION['menu_country'] = strtolower( $country->country_code ); $item = '<li class="menu-produkte"><a href="/' . esc_url( $_SESSION['menu_country'] ) . '/shop">Produkte</a></li>'; } else { $item = null; } wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s' . $item . '</ul>', ) );