Wordpress - 自定义 CSS 过滤器

Wordpress - Customizing CSS Filters

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

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

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

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

您正在编辑的数组实际上是作为参数传递给 'safe_style_css' 过滤器的。 'safe_style_css' 的 return 值存储在 $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=