সম্পাদক-স্টাইল। CSS পুনরায় লোড করার জন্য জোর করা হচ্ছে


11

editor-style.cssআমি যখন টিনিএমসিই সম্পাদকের ম্যানুয়ালি স্টাইলশীটটি পরিবর্তন করি তখন কি তাজা করার জন্য জোর করার কোনও পদ্ধতি আছে ? পরিবর্তন তাত্ক্ষণিকভাবে প্রদর্শিত হয় না তবে সেগুলি প্রশাসনের ব্যাকএন্ডের অ্যাডমিন দিকে ক্যাশে করা হবে।

উদাহরণস্বরূপ:

editor-style.css?ver=3393201

এটি যদি আপনার বিকাশের উদ্দেশ্যে হয় তবে কেবল ব্রাউজারে একটি হার্ড রিফ্রেশ করবেন না বা ব্রাউজারের ক্যাশেটি বন্ধ করে দেওয়া হবে না কেন?
সানচোথফাত

3
আমার একই সমস্যা ছিল এবং একটি হার্ড রিফ্রেশ সবসময় কাজ করে না। ক্যাচিংটি বেশ জেদী বলে মনে হচ্ছে।
রায় গুলিক

উত্তর:


10

যে জন্য একটি হুক হল: 'mce_css'_WP_Editors::editor_settings()এটিতে ডাকা হয় এবং আপনি সমস্ত লোড হওয়া স্টাইলশিট কমাটি প্রথম এবং একমাত্র পরামিতি হিসাবে পৃথক করে পান।

এখন এটি সহজ: গ্লোবাল ভেরিয়েবল ব্যবহার করুন $editor_styles(এখানে আপনার থিম এবং প্যারেন্ট থিমের সম্পাদক স্টাইলশিট ইতিমধ্যে সঞ্চিত আছে), প্যারামিটার হিসাবে ফাইলের শেষ পরিবর্তনটির সময় যুক্ত করুন এবং স্ট্রিংটি পুনর্নির্মাণ করুন।

প্লাগইন হিসাবে :

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: Refresh Editor Stylesheets
 * Description: Enforces fresh editor stylesheets per version parameter.
 * Version:     2012.07.21
 * Author:      Fuxia
 * Plugin URI:  http://wordpress.stackexchange.com/q/33318/73
 * Author URI:  https://fuxia.me
 * 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 );
    }

ওয়ার্ডপ্রেস ৩.৯-তে এই প্লাগইনটি এখন ইমেজ সম্পাদনা বোতামগুলি ভেঙে ফেলবে বলে মনে হচ্ছে। আমি কেন তা জানার চেষ্টা করার সুযোগ পাইনি।
mrwweb

২০১ Update আপডেট : functions.phpডাব্লুপি 4.6.1 এর সাথে এই কোডটি হ'ল (তবে আমার ফাইলে প্লাগিনের চেয়ে বেশি) যুক্ত করা, এটি পুরোপুরি কার্যকর করে works মিডিয়া যুক্ত করা বা মিডিয়া ইনলাইন সম্পাদনা করার ক্ষেত্রে কোনও সমস্যা আছে বলে মনে হয় না। এটা যে আপনি না একটি আর্গুমেন্ট যোগ করতে পারেন উন্মত্তের add_editor_cssসঙ্গে filemtimeপথ আপনার সাথে করতে পারেন wp_enqueue_styleফাইলের নাম এর প্রান্তে, অথবা এমনকি একটি আবর্জনা স্ট্রিং ... কিন্তু এই সম্পূর্ণভাবে কাজ করে।
অনিশ্চিত

এই দরকারী প্লাগইন জন্য আপনাকে ধন্যবাদ! আমি এটি ডাব্লুপি 4.9.6 দিয়ে ব্যবহার করছি। এই মুহুর্তে আমি যে বাগটি পেয়েছি তা কেবলমাত্র যখন প্লাগইনটি সক্রিয় করা হয় তখন <!--more-->টিনিএমসিই-র মধ্যে প্রদর্শিত হয় না। কোনও ধারণা আমি কীভাবে এটি সমাধান করতে পারি?
pa4080

এটি ডিফল্ট সম্পাদক শৈলীর লোড ব্রেক করে।
xsonic

9

ওয়ার্ডপ্রেসের বর্তমান সংস্করণ (৪.7.২) এর জন্য কাজ করার জন্য আমি টসচোর উত্তর পেতে পারি না এবং এটি বলে মনে হচ্ছে যে টিনিএমসিই ইন আরে অ্যারেতে একটি ক্যাশে_সুফিক্স সেট আছে 'wp-mce-' . $tinymce_version

সুতরাং পরিবর্তে, আপনি কেবল এইটিকে ছোট_মিশে_পূর্বক_ইন্ট ফিল্টার দিয়ে ওভাররাইট করতে পারেন:

function wpse33318_tiny_mce_before_init( $mce_init ) {

    $mce_init['cache_suffix'] = 'v=123';

    return $mce_init;    
}
add_filter( 'tiny_mce_before_init', 'wpse33318_tiny_mce_before_init' );

অবশ্যই, এটি প্রায় হিসাবে ভাল না filemtime(), কিন্তু কমপক্ষে এটি 4.7.2 এ কাজ করে।

দ্রষ্টব্য: এটি অন্যান্য সম্পাদক শৈলীতে (যেমন স্কিন.মিন.এস.এস.এস., বিষয়বস্তু.মিনি.সি.এস., ড্যাশিকনস.মিন.সি.এস.এস, এবং ডাব্লুপি-কন্টেন্ট.সিএস) ক্যাশে বুস্টার যুক্ত করে)


2
আপনি যদি সক্রিয় পরীক্ষা এবং বিকাশে থাকেন তবে আমি একটি 'সংস্করণ' নম্বর যুক্ত করব যা সর্বদা আলাদা হবে। এটি সম্পাদনের এক উপায় হ'ল ইউনিক্স ইওচ (জানুয়ারী 1 1970 00:00:00 GMT) $mce_init['cache_suffix'] = "v=" . time(); বা আরও সহজ কিছু এর থেকে কয়েক সেকেন্ড ব্যবহার করা $mce_init['cache_suffix'] = "v=" . rand(100000000,999999999);
রোবার্থট্টিংগার

6

add_editor_styleআপনার সিএসএস ফাইলটি দিয়ে কেবল কল করার পরিবর্তে ক্যাশে বুস্টার ক্যোয়ারী স্ট্রিং প্যারামিটার যুক্ত করুন:

add_action('admin_enqueue_scripts', function(){
  if(is_admin()){
    add_editor_style(get_template_directory_uri().'/assets/css/editor.css?1');
  }
});

এটি এখন পর্যন্ত সবচেয়ে সহজ পদ্ধতি যা প্রতিবার নির্দোষভাবে কাজ করে।
antikbd

1
আমি এই পদ্ধতির সরলতা পছন্দ করি এবং এটি অন্য সম্পর্কিত সম্পর্কযুক্ত স্টাইলশিটে ক্যোরি স্ট্রিং যুক্ত করে না। আমি এটিকে filemtime()ক্যাশে-বস্টিং আপডেটগুলি স্বয়ংক্রিয় করতে সংযুক্ত করেছি :add_editor_style(get_stylesheet_directory_uri() . '/editor-style.css?v=' . filemtime(get_stylesheet_directory() . '/editor-style.css'));
জোশ হ্যারিসন

এখানে কীটি সর্বদা প্রশ্নে থাকা সিএসএস ফাইল (গুলি) ব্যবহার করতে (যেমন ব্যবহার করুন get_template_directory_uri()), যখন ক্যাশে বুস্টার সংযোজন করার সময় নিখুঁত পাথ ব্যবহার করা হয় ; অন্যথায় এটি কাজ করবে না।
জোলি সাজাবি

3

আমার একই সমস্যা ছিল (2012, ডব্লিউপি 3.4.2 !!)। এই বাগটি প্রায় থাকাকালীন সম্ভাব্য সমাধান:

1) আপনি যদি ফায়ারব্যাগ ব্যবহার করেন, [x] নেট প্যানেলে ব্রাউজার ক্যাশে অক্ষম করুন। আমার এমনকি একটি খুব বিস্ময়কর সমস্যা ছিল, যা ক্যাশেড সম্পাদক-শৈলী সংক্ষেপে উপস্থিত হবে (একটি সিএসএস-ফিল্টারযুক্ত) ফায়ারব্যাগ নেট প্যানেল দ্বিতীয় বিভাজনের জন্য, আবার অদৃশ্য হওয়ার চেয়ে বেশি। নিজেকে প্রমাণ করার জন্য স্ক্রিনশট নিয়েছি।

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');

হ্যাকি, তবে নির্ভরযোগ্য।


0

আমি ধরে নিলাম সর্বশেষ সংস্করণগুলিতে গৃহীত উত্তরের সমস্যাটিতে $editor_stylesঅ্যারে কেবল থিম ব্যবহার করে যুক্ত করা স্টাইলশিট রয়েছে, ফলস্বরূপ এটি রিটার্নিং স্ট্রিং থেকে মূল ওয়ার্ডপ্রেস বা প্লাগইনগুলির দ্বারা যুক্ত স্টাইলশিটগুলিকে বাদ দেয় ps

কোডটি টুইট করার পরে আমি যে সমাধানটি নিয়ে এসেছি তা নীচে দেওয়া হল, আপনি এটি আপনার ফাংশন.এফপি ফাইলটিতে ব্যবহার করতে পারেন। আমার সমাধানটি $editor_stylesঅ্যারেতে উপস্থিত স্টাইলশিটগুলির জন্য নেস্টেড লুপ এবং চেকগুলি ব্যবহার করে এবং স্ট্রিংয়ের ক্যোয়ারী করার জন্য প্যারামিটার হিসাবে সর্বশেষ পরিবর্তিত সময় সংযোজন করে এবং অ্যারেতে মান আপডেট করে।

add_filter('mce_css', 'fresh_editor_style');

function fresh_editor_style($mce_css_string){
    global $editor_styles;
    $mce_css_list = explode(',', $mce_css_string);

    foreach ($editor_styles as $filename){
        foreach($mce_css_list as $key => $fileurl){
            if(strstr($fileurl, '/' . $filename)){
                $filetime = filemtime(get_stylesheet_directory() . '/' . $filename);
                $mce_css_list[$key] =  add_query_arg('time', $filetime, $fileurl);
            }
        }
    }

    return implode(',', $mce_css_list);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.