Wordpress - 自定义CSS过滤器

时间:2015-01-16 16:27:07

标签: php css wordpress filter

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您正在编辑的数组实际上是作为参数传递给'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 =