環境
ナビゲーションにカスタム言語切り替えリンクを追加しようとしていました。問題は、2 つのメニューの場所header-main
とfooter-main
(これらはメニュー スラッグです) があることです。header-main
しかし、メニューには言語リンクのみが必要です。
現在、ワードプレスのコールバック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;
}
問題
しかし、ワードプレスフィルターを次のように変更すると:
add_filter('wp_nav_menu_header-main_items', 'add_translation_navigation');
そのため、フィルターはheader-main
メニューのみに適用されます。現在の言語がEnglish
の場合は機能し、フィルターを起動しますが、言語が切り替えられたArabic
場合はフィルターを起動しません。
Arabic
また、 用と用の 2 つの別個のメニューがありますEnglish
が、両方の場所は同じです。header-main