简单的答案似乎是人为错误。Originally, 在开发过程中,221有一个菜单,注册如下:
\'primary\' => __( \'Primary Navigation\', \'twentytwentyone\' ),
然后有人
went through and added escaping 对许多人来说
__()
贯穿主题,导致:
\'primary\' => esc_html__( \'Primary Navigation\', \'twentytwentyone\' ),
然后,后来,
a second menu was added, 像这样:
\'primary\' => esc_html__( \'Primary Navigation\', \'twentytwentyone\' ),
\'footer\' => __( \'Footer Navigation\', \'twentytwentyone\' ),
似乎没有人注意到这种差异。
人们通常认为最好是逃避。”;“迟交”;,如中所述this WordPress VIP article. 也就是说,尽可能接近输出。因此,需要注意的是,这些行没有输出任何内容。他们只是定义稍后要输出的字符串<然而,这是WordPress输出这些值的地方:
<label for="locations-<?php echo esc_attr( $location ); ?>"><?php echo $description; ?></label>
请注意
$description
, 它是菜单名,不是转义的。因此,由于编辑WordPress核心不是一个选项,因此在注册菜单名称时将其转义为最佳实践。
因此,应该转义次菜单。对是吗?没有,为什么?人为错误。