Контекст
Я пытался добавить пользовательские ссылки для переключения языков в навигацию. Проблема в том, что у меня есть два пункта меню header-main
и footer-main
(это ярлыки меню). Но мне нужны только языковые ссылки в меню header-main
.
В настоящее время обратный вызов wordpress wp_nav_menu_items
работает нормально, но он добавит обработанные ссылки во все места меню. Вот рабочий код для него:
function icl_post_languages() {
return icl_get_languages('skip_missing=1');
}
function get_translation_navigation() {
$nav = '';
$lang_nav = icl_post_languages();
if (count($lang_nav) > 0) {
foreach ($lang_nav as $item) {
$nav .= '<li>';
$nav .= '<a href="' . $item['url'] . '">' . $item['native_name'] . '</a>';
$nav .= '</li>';
}
}
return $nav;
}
add_filter('wp_nav_menu_items', 'add_translation_navigation');
function add_translation_navigation($menu) {
$language_nav = get_translation_navigation();
$menu = $menu . $language_nav;
return $menu;
}
Проблема
Но когда я меняю фильтр WordPress на:
add_filter('wp_nav_menu_header-main_items', 'add_translation_navigation');
Так, что фильтр применяется только к header-main
меню. Он работает и срабатывает фильтр, когда текущий язык English
, когда язык переключается на Arabic
, фильтр не срабатывает.
Кроме того, есть два отдельных меню, одно для Arabic
и одно для English
, но расположение обоих одинаковое, т.е. header-main