如何转义循环生成html

时间:2019-12-18 作者:Steven Gardner

我有下面的代码,它标记了一个警告,主题审阅者要求我修复该警告。

WARNING All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found \'$fontListStr\'.
警告消息中的$fontListStr引用了以下代码的最后一行:

              foreach( $this->fontList as $key => $value ) {
            $fontCounter++;
            $fontListStr .= \'<option value="\' . esc_attr($value->family) . \'" \' . selected( $this->fontValues->font, $value->family, false ) . \'>\' . esc_html($value->family) . \'</option>\';
            if ( $this->fontValues->font === $value->family ) {
              $isFontInList = true;
            }
            if ( is_int( $this->fontCount ) && $fontCounter === $this->fontCount ) {
              break;
            }
          }
          if ( !$isFontInList && $this->fontListIndex ) {
            // If the default or saved font value isn\'t in the list of displayed fonts, add it to the top of the list as the default font
            $fontListStr = \'<option value="\' . esc_attr($this->fontList[$this->fontListIndex]->family) . \'" \' . selected( $this->fontValues->font, $this->fontList[$this->fontListIndex]->family, false ) . \'>\' . esc_html($this->fontList[$this->fontListIndex]->family) . \' (default)</option>\' . $fontListStr;
          }
          // Display our list of font options
          echo $fontListStr;
我一辈子都不知道如何在不破坏输出的情况下逃离最后一行代码。事实上,我不明白为什么我需要这样做,因为我避开了前面提到的所有潜在漏洞。

你能帮我妥善地避开这件事吗。谢谢

1 个回复
SO网友:Steven Gardner

这似乎成功了:

  // Display our list of font options
          $allowed_html = array(
              \'option\' => array(
                  \'value\' => array(),
                  \'selected\' => array()
              ),
          );
          echo wp_kses($fontListStr, $allowed_html);

相关推荐

将CodeMirror编辑器用于同一页面上的CSS和HTML

我正在尝试加载CodeMirror编辑器以用于插件后端。有些文本区域用于HTML,有些用于CSS。我对WP开发非常陌生,请原谅我的无知,但这样做: add_action(\'admin_enqueue_scripts\', \'joermo_enqueue_scripts\'); function joermo_enqueue_scripts($hook) { $joermo_html_code[\'ce_html\'] = wp_enqueue_code_e