如何在选项值中保存HTML代码时防止转义?

时间:2011-01-13 作者:Amit

我有一个主题选项页面,用户可以在其中添加某些选项,如Facebook链接等。其中一个选项是一些广告代码,当将其保存为选项时,它会一次又一次地被转义。

保存插入管理页面的代码的最佳方法是什么<textarea> 使用update_option( \'sidebar_code\', $_POST[\'sidebar_code\'] ); ?

2 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

stripslashes(wp_filter_post_kses(addslashes($_POST[\'sidebar_code\'])));
但您应该知道,kses过滤器并不是百分之百安全的。

SO网友:gillespieza

这并不是你问题的完整答案,但可能为你指明了正确的方向:你可以尝试<?php esc_textarea( $text ) ?>, 如法典所述:http://codex.wordpress.org/Function_Reference/esc_textarea.

我自己的metabox textarea片段如下所示:

<?php 
  if ( $meta_box[\'type\'] == "textarea" ) {
    $meta_box_value = esc_textarea( get_post_meta($post->ID, $meta_box[\'name\'].\'_value\', true) );
    echo \'<textarea class="meta-textarea" style="width: 100%;" cols="20" rows="2" name="\' . $meta_box[\'name\'] . \'_value">\' . $meta_box_value . \'</textarea><br />\';
  }
?>

结束

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am