【问题标题】:Wordpress - Customizing CSS FiltersWordpress - 自定义 CSS 过滤器
【发布时间】:2015-03-15 07:39:01
【问题描述】:

我正在使用 TinyMCE 编辑器运行 Wordpress 4.1。在 TinyMCE 编辑器中,我启用了 Advanced Lists 插件,它允许自定义列表项的列表样式类型(例如<li style="list-style-type: lower-alpha">)。

当我提交带有修改列表样式的帖子时,list-style-type 声明被删除,但其他 CSS 声明就可以了(例如 text-align)。

查看 Wordpress 源代码,CSS 正在被 kses.php 中的 safecss_filter_attr() 函数过滤。在safecss_filter_attr() 中,我可以看到一组 CSS 声明。如果我将list-style-type 添加到该数组中,我可以保存我的帖子,并且list-style-type 不再被过滤掉。

但是,编辑 Wordpress 源代码是不可维护的,因为它最终会在 Wordpress 升级时被覆盖。所以,我的问题是:如何防止 Wordpress 以可维护的方式过滤掉 list-style-type CSS 声明?

【问题讨论】:

    标签: php css wordpress filter


    【解决方案1】:

    您正在编辑的那个数组实际上是作为参数传递给'safe_style_css' 过滤器的。 'safe_style_css' 的返回值存储在 $allowed_attr 中。 (kses.php 中的第 1482 行)

    所以在你的functions.php中,写一个看起来像这样的函数。

    function my_css_allow($allowed_attr) {
    
        if (!is_array($allowed_attr)) {
            $allowed_attr = array();
        }
    
        $allowed_attr[] = 'list-style-type';
    
        return $allowed_attr;
    }
    
    add_filter('safe_style_css','my_css_allow');
    

    我还没有测试过,但它看起来应该可以工作。

    HTH,

    =C=

    【讨论】:

    • 太棒了,效果很好。我将不得不阅读过滤器,因为我不太了解它们。此外,您的代码几乎是完美的,除了第 3 行缺少 ) 和最后一行额外的 '
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2018-02-13
    • 2014-09-30
    • 2011-03-30
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多