如何在指定PHP代码中正确放置HTML加粗标签实现"Located:"加粗
解决方法:在WordPress中安全加粗"Located:"文本
你遇到的问题核心是**esc_html__()函数会转义所有HTML字符**——你之前写的<b>会被转换成<b>,所以直接变成文本输出了。下面给你两种安全且有效的解决方案:
方法1:拆分文本与HTML标签(推荐)
把翻译文本和加粗标签分开处理,既保证翻译的纯净性,又避免转义问题。代码如下:
/* translators: used between list items, there is a space after the comma */ $tags_list = get_the_tag_list( '', esc_html__( ', ', 'vogue' ) ); if ( $tags_list ) { printf( '<br /><br /><span class="tags-links"><strong>%1$s</strong> %2$s</span>', esc_html__( 'Located:', 'vogue' ), $tags_list ); // WPCS: XSS OK }
- 这里用
<strong>替代<b>(语义化更强,更符合现代HTML规范),直接写在printf的模板字符串里,不会被转义。 esc_html__()只处理"Located:"文本,确保翻译后的内容不会有XSS风险。
方法2:允许翻译字符串包含HTML(需额外安全过滤)
如果你的翻译场景需要让标签和文本一起被翻译(比如某些语言需要调整加粗位置),可以用__()(不转义HTML)配合wp_kses()做安全过滤:
/* translators: %1$s is the tag list. Keep <strong> around "Located:" or adjust as needed for your language */ $tags_list = get_the_tag_list( '', esc_html__( ', ', 'vogue' ) ); if ( $tags_list ) { $located_string = sprintf( __( '<strong>Located:</strong> %1$s', 'vogue' ), $tags_list ); // 只允许<strong>标签,过滤掉其他危险HTML $safe_located_string = wp_kses( $located_string, array( 'strong' => array() ) ); printf( '<br /><br /><span class="tags-links">%s</span>', $safe_located_string ); }
__()不会转义HTML,所以<strong>会保留,但必须用wp_kses()限制允许的标签,防止恶意内容注入。
两种方法都能解决你的问题,优先推荐方法1,因为它更简洁、安全,也更符合WordPress的最佳实践。
内容的提问来源于stack exchange,提问作者Deb T
相关产品推荐
相关产品推荐

