通过主题定制器进行的HTML输出不起作用

时间:2015-06-02 作者:tsquez

好吧,我又遇到了一个我似乎无法解决的问题。我搜索了又搜索,找到了答案,但我似乎无法让它发挥作用。

我有一个名为WP Forge的主题,它广泛使用主题定制器。用户可用的选项之一是在页脚中添加或修改版权文本。这可能很简单,比如他们更改年份或公司名称,但人们通常喜欢添加网站链接。我不断收到关于html没有按应有方式输出的电子邮件。所以我想弄清楚这一点。

在WP Forge的主题定制器中,我有以下设置和控制:

  $wp_customize->add_setting(\'wpforge_footer_text\',array(/* footer text */
    \'default\' => \'\',
    \'type\' => \'theme_mod\',
    \'transport\' => \'postMessage\',
    \'sanitize_callback\' => \'wpforge_sanitize_text\',
    \'priority\' => 20,
  ));
  $wp_customize->add_control(\'wpforge_footer_text\',array(
    \'label\' => __(\'Footer Text\',\'wp-forge\'),
    \'section\' => \'footer_content\',
    \'type\' => \'textarea\',
  ));
正如您所看到的,清理回调是wpforge_sanitize_text. 以下是清理功能:

  function wpforge_sanitize_text( $input ) {
      return wp_kses_post( force_balance_tags( $input ) );
  }
如果您只需输入文本,它就可以正常工作。但是,如果我添加以下内容:

Copyright © 2015 - <a href="http://somelinkhere.com">SomeLinkHere</a>
我在预览窗口中看到:

Copyright © 2015 - SomeLinkHere
一切看起来都很好,所以我点击“保存并发布”,然后查看主页,我看到以下内容:

Copyright © 2015 - <a href="http://somelinkhere.com">SomeLinkHere</a>
那么我到底错过了什么呢?有人能帮我按我想要的方式工作吗?非常感谢您的帮助,我提前向您表示感谢。

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

可能有点晚了,茨奎兹,但是esc_attr 表示属性,例如。<a title="esc_attr( $title )">. 您还可以使用wp_kses_post 相反

结束

相关推荐