有没有办法从TinyMCE中删除默认的css?

时间:2016-03-12 作者:squarecandy

我正在通过向TinyMCE富文本编辑器添加额外的CSS,使编辑器看起来更像前端。

WordPress添加/wp-includes/js/tinymce/skins/lightgray/content.min.css/wp-includes/js/tinymce/skins/wordpress/wp-content.css 默认情况下。

有没有一种简单的方法可以消除这个问题?

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

这就是我达到的目的。这将只删除自定义wordpress css/wp-includes/js/tinymce/skins/wordpress/wp-content.css.

function squarecandy_tinymce_remove_mce_css($stylesheets)
{
    $stylesheets = explode(\',\',$stylesheets);
    foreach ($stylesheets as $key => $sheet) {
        if (preg_match(\'/wp\\-includes/\',$sheet)) {
            unset($stylesheets[$key]);
        }
    }
    $stylesheets = implode(\',\',$stylesheets);
    return $stylesheets;
}
add_filter("mce_css", "squarecandy_tinymce_remove_mce_css");
默认情况下加载的其他文件(/wp-includes/js/tinymce/skins/lightgray/content.min.css) 不是mce\\U css筛选器的一部分。似乎没有任何方法可以在不破坏TinyMCE的情况下移除此项。但在这两个css文件中,这一个添加了较少需要重写的默认内容。

SO网友:Tim Malone

您应该能够通过钩住mce_css 在您的functions.php 文件:

add_filter("mce_css", "my_remove_mce_css");

function my_remove_mce_css($stylesheets){
    return "";
}
我还没有测试过这个,但应该可以。你可能想echo 超出的值$stylesheets 在您不返回任何内容之前,您可能希望保留一些样式表,在这种情况下,您可以删除不需要的样式表str_replace.

有关此筛选器的详细信息,请访问https://codex.wordpress.org/Plugin_API/Filter_Reference/mce_css

SO网友:Takahashi Ei

删除/wp-includes/js/tinymce/skins/lightgray/content.min.css, 在您的functions.php.

add_filter(\'tiny_mce_before_init\', function($init){
    $init[\'init_instance_callback\'] = \'function(){\'
        . \'jQuery("#content_ifr").contents().find("link[href*=\\\'content.min.css\\\']").remove();\'
    . \'}\';
    return $init;
});
我不知道这是正确的方法,但效果很好。