问题描述
我需要添加换行符到导航菜单项标题。我没有意识到这是一个问题,因为当我以超级管理员身份登录时,我可以添加<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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。