問題描述
我需要新增換行符到導航選單項標題。我沒有意識到這是一個問題,因為當我以超級管理員身份登入時,我可以新增<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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。