问题描述

当我手动更改 TinyMCE 编辑器的样式表时,是否有强制刷新 editor-style.css 的方法?修改不会立即显示,但它们将被缓存在管理后端的管理端。

例如:

editor-style.css?ver=3393201

最佳解决方案

有一个钩子:’mce_css’ 。它在_WP_Editors :: editor_settings() 中调用,并且您将所有加载的样式表逗号分隔为第一个也是唯一的参数。

现在很容易:使用全局变量 $editor_styles(这里是您的主题和父主题的编辑器样式表已存储),将文件最后一次修改的时间添加为参数并重建字符串。

作为 plugin

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Fresh Editor Stylesheets
 * Description: Enforces fresh editor stylesheets per version parameter.
 * Version:     2012.07.21
 * Author:      Thomas Scholz
 * Plugin URI:  http://wordpress.stackexchange.com/q/33318/73
 * Author URI:  http://toscho.de
 * License:     MIT
 * License URI: http://www.opensource.org/licenses/mit-license.php
 */

    add_filter( 'mce_css', 't5_fresh_editor_style' );

    /**
     * Adds a parameter of the last modified time to all editor stylesheets.
     *
     * @wp-hook mce_css
     * @param  string $css Comma separated stylesheet URIs
     * @return string
     */
    function t5_fresh_editor_style( $css )
    {
        global $editor_styles;

        if ( empty ( $css ) or empty ( $editor_styles ) )
        {
            return $css;
        }

        // Modified copy of _WP_Editors::editor_settings()
        $mce_css   = array();
        $style_uri = get_stylesheet_directory_uri();
        $style_dir = get_stylesheet_directory();

        if ( is_child_theme() )
        {
            $template_uri = get_template_directory_uri();
            $template_dir = get_template_directory();

            foreach ( $editor_styles as $key => $file )
            {
                if ( $file && file_exists( "$template_dir/$file" ) )
                {
                    $mce_css[] = add_query_arg(
                        'version',
                        filemtime( "$template_dir/$file" ),
                        "$template_uri/$file"
                    );
                }
            }
        }

        foreach ( $editor_styles as $file )
        {
            if ( $file && file_exists( "$style_dir/$file" ) )
            {
                $mce_css[] = add_query_arg(
                    'version',
                    filemtime( "$style_dir/$file" ),
                    "$style_uri/$file"
                );
            }
        }

        return implode( ',', $mce_css );
    }

次佳解决方案

我有同样的问题 (2012,WP 3.4.2 !!) 。可能的解决方案,而这个错误是:

1) 如果您使用 firebug,[x] 在网络面板中禁用浏览器缓存有助于。我甚至有一个非常奇怪的问题,缓存的 editor-style 短暂地出现 (在 css-filtered)Firebug 网络面板中分裂,而不再消失。拍摄截图来证明自己。

2) 完整的浏览器缓存清除有助于。无论何种原因,此问题未重新出现。

3) 最后,我最喜欢的建议,如果你还要确保,即你的客户在分期或实时服务器上得到你的增量改进 (没有任何烦人的缓存清除建议):

重新定位文件并继续计数:

// add_editor_style('editor-style-01.css'); bump for every deployment
// add_editor_style('editor-style-02.css');
add_editor_style('editor-style-03.css');

哈基,但可靠。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。