問題描述

我需要添加換行符到導航菜單項標題。我沒有意識到這是一個問題,因為當我以超級管理員身份登錄時,我可以添加<br/> 很好,但顯然 regular-level 管理員不能。

我已經閲讀了這篇文章 Custom Menus Description Stripping HTML Tags

但是我相信這些標籤在保存/更新時被剝離,所以我不會立即看到 Custom Walker 是如何解決的,但是我的大腦今天很好,所以很明顯。

wp_save_nav_menu_items()wp_update_nav_menu_item()也似乎沒有任何衞生狀況。

最佳解決方案

繼 @Rarst 之後,關於安全角色的提示是我最終做的:

function wpa_105883_menu_title_markup( $title, $id ){
    if ( is_nav_menu_item ( $id ) && ! is_admin() ){
        $title = preg_replace( '/#BR#/', '<br/>', $title );
    }
    return $title;
}
add_filter( 'the_title', 'wpa_105883_menu_title_markup', 10, 2 );

編輯:也是每個 Rarst 的評論我已經用 str_ireplace 替換了 preg_replace

function wpa_105883_menu_title_markup( $title, $id ){
    if ( is_nav_menu_item ( $id ) ){
        $title = str_ireplace( "#BR#", "<br/>", $title );
    }
    return $title;
}
add_filter( 'the_title', 'wpa_105883_menu_title_markup', 10, 2 );

次佳解決方案

沒有將衞生信息轉換為內部或編碼自定義界面… 我將為其指定一些安全字符 (例如管道|),並在輸出上替換為 break 標籤。

它通過 Walker 中的 the_title 過濾器,只需要及時添加和刪除過濾器,因此它不會影響其他地方的標題。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。