2017-05-27 15 views
0

是否可以从输出中删除esc_html,以便将任何HTML链接添加到自定义字段中,并链接到HTML输出中?删除esc_html

<a href="https://example.com">example.com</a> 

这里是我的PHP代码:

esc_html(get_post_meta($post->ID, $key, true))); 

我的问题是有没有过滤器添加到PHP,所以我不能修改输出。

也许有一个jQuery解决方案或什么的。

当我修改插件中的代码的作品,但那不是未来的证明。

get_post_meta($post->ID, $key, true)); 

编辑:这里的HTML源 enter image description here

回答

1

我假设你使用WordPress。您不应该通过绕过验证来信任您的用户。但除esc_html之外还有其他选项。

看看Data Validation,更具体地说是wp_kses家庭功能。

例如,wp_kses()函数接受三个参数(full tuto here):

  • content - (字符串)内容通过KSES
  • 过滤
  • allowed_html - 一个阵列,其中每个键是允许的HTML元素和值是该元素的允许属性数组
  • allowed_protocols - 可选。在链接允许协议(例如HTTP,邮寄地址,饲料等)

wp_kses()因此是一个非常灵活的功能,允许你以除去不需要的标签,或从标签只是不希望的属性。

例子:

$content = "<em>Click</em> <a title='click for wp.tuts+' href='http://wp.tutsplus.com'>here</a> to visit <strong> wptuts+ </strong>"; 

echo wp_kses($content, array(
    'strong' => array(), 
    'a' => array('href') 
)); 

// Prints the HTML "Click <a href='http://wp.tutsplus.com'>here</a> to visit <strong> wptuts+ </strong>": 
Click <a href="http://wp.tutsplus.com">here</a> to visit <strong> wptuts+ </strong> 

:小心,虽然。正如文档中指出的那样,“kses系统可以是资源密集型的”。

+0

谢谢,但我不能编辑插件代码。我不是开发者。我需要一个解决方案来允许 Dev