关于Options Framework主题选项框架过滤常用标签

2015年02月12日15:21:53 14 3,703

相信很多主题作者,在使用Options Framework主题选项框架时都遇到一个棘手的问题,就是该框架出于安全会过滤掉常用标签,最关键是过滤掉加载 javascript的常用标签,造成无法添加广告及站点统计代码,虽然通过使用编辑器模式替代textarea文本域,可解决上述问题,但主题控制面板都是编辑器窗口看上去有些怪异。

其实官方已给出解决办法:展开


Options Framework: Sanitization Filters

  1. /*
  2. * This is an example of how to override a default filter
  3. * for 'textarea' sanitization and $allowedposttags + embed and script.
  4.  */
  5. add_action('admin_init','optionscheck_change_santiziation', 100);
  6. function optionscheck_change_santiziation() {
  7.     remove_filter( 'of_sanitize_textarea', 'of_sanitize_textarea' );
  8.     add_filter( 'of_sanitize_textarea', 'custom_sanitize_textarea' );
  9. }
  10. function custom_sanitize_textarea($input) {
  11.     global $allowedposttags;
  12.     $custom_allowedtags["embed"] = array(
  13.       "src" => array(),
  14.       "type" => array(),
  15.       "allowfullscreen" => array(),
  16.       "allowscriptaccess" => array(),
  17.       "height" => array(),
  18.           "width" => array()
  19.       );
  20.       $custom_allowedtags["script"] = array();
  21.       $custom_allowedtags = array_merge($custom_allowedtags$allowedposttags);
  22.       $output = wp_kses( $input$custom_allowedtags);
  23.     return $output;
  24. }

不过这个实例只是不过滤<script>标签,像这种:

  1. <script type="text/javascript" src="zmingcx.js"></script>

还是会过滤掉type、src等标签,可能造成JS文件不能正常加载。

下面是经过我修改的完整不过滤  javascript 常用标签代码:展开

  1. /*
  2.  * This is an example of how to override a default filter
  3.  * for 'textarea' sanitization and $allowedposttags + embed and script.
  4.  */
  5. add_action('admin_init','optionscheck_change_santiziation', 100);
  6. function optionscheck_change_santiziation() {
  7.     remove_filter( 'of_sanitize_textarea', 'of_sanitize_textarea' );
  8.     add_filter( 'of_sanitize_textarea', 'custom_sanitize_textarea' );
  9. }
  10. function custom_sanitize_textarea($input) {
  11.     global $allowedposttags;
  12.     $custom_allowedtags["embed"] = array(
  13.         "src" => array(),
  14.         "type" => array(),
  15.         "allowfullscreen" => array(),
  16.         "allowscriptaccess" => array(),
  17.         "height" => array(),
  18.         "width" => array()
  19.       );
  20.     $custom_allowedtags["script"] = array"type" => array(),"src" => array() );
  21.     $custom_allowedtags = array_merge($custom_allowedtags$allowedposttags);
  22.     $output = wp_kses( $input$custom_allowedtags);
  23.     return $output;
  24. }

该代码在Options Framework 1.91版中测试通过,其它较早版本未测试。

个人感觉默认过滤常用标签根本没这个必要,可能就是在故意难为我这样的二把刀主题作者。

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:14   其中:访客  13   博主  1

    • MTnetwork 2

      学习了

      • 大谋士网 3

        好久没折腾主题了。折腾起来太费时间和精力了。

        • openeto 2

          学习了,不过折腾主题太费时间精力,尤其对于我这种半吊子加懒人!所以等鸟哥主题出来给我留个位,最近太忙可能没时间关注!最后那些扒皮的盗版的如果可以手下留情就好了

            • 育儿网 2

              @openeto 哈哈加密了

                • openeto 2

                  @育儿网 加密这个也不是很管用的!话说这评论有问题,会保留用户名!下面回复竟然是‘‘我’’

                  • openeto 2

                    @育儿网 加密也不是很管用的,话说这评论保存用户名,下楼评论还是‘’我‘’

                • 天若随刊 3

                  不知道是用什么加密的,如果是zend optimizer我还得去调整下服务器环境。。。。

                    • 资源窝 1

                      @天若随刊 基本上目前主流的还是zend加密,一般的虚拟主机估计比较麻烦,不过vps就可以自己配置了。

                    • openeto 2

                      真好

                      • 北极鱼 0

                        正文开始的图片广告路径错了吧?图裂了~ :cool:

                        • 阿达的 2

                          啊啊啊

                          • 暗淡的黑 0

                            大神,请问上面的代码怎么用?要放到哪里呢?刚开始用这个框架,不是很懂。

                            • 冰镇椰子汁 2

                              ality主题不更新了?