Jquery সংস্করণ আপডেট করুন


24

আমি ওয়ার্ডপ্রেস সংস্করণ 4.7.2 চালাচ্ছি। এবং এটি jQuery সংস্করণ 1.12 ব্যবহার করে। আমার এই সংস্করণটি একটি উচ্চতরতে আপডেট করা দরকার। আমি এর আগে এটি একটি নতুন সংস্করণ দিয়ে প্রতিস্থাপন করেছি, কিন্তু আমি যখন ওয়ার্ডপ্রেস কোর আপগ্রেড করি তখন এটি আবার 1.12 দিয়ে প্রতিস্থাপন করা হয়। ওয়ার্ডপ্রেস স্থায়ীভাবে ব্যবহার করে এমন jQuery এর সংস্করণ আমি কীভাবে পরিবর্তন করতে পারি?

উত্তর:


29

সতর্কতা: আপনার মূল jQuery সংস্করণটি প্রতিস্থাপন করা উচিত নয়, বিশেষত অ্যাডমিন প্যানেলে । যেহেতু অনেকগুলি ওয়ার্ডপ্রেস মূল কার্যকারিতা সংস্করণটির উপর নির্ভর করে। এছাড়াও, অন্যান্য প্লাগইনjQueryমূলটিতে যুক্ত সংস্করণটিরউপর নির্ভর করতে পারে।

আপনি যদি নিশ্চিত হন যে আপনি মূল jQueryসংস্করণটি পরিবর্তন করতে চান তবে সেক্ষেত্রে আপনি আপনার সক্রিয় থিমের functions.phpফাইলটিতে নিম্নলিখিত সিওডি যুক্ত করতে পারেন (আপনি যদি এর জন্য একটি প্লাগইন তৈরি করেন তবে আরও ভাল):

function replace_core_jquery_version() {
    wp_deregister_script( 'jquery' );
    // Change the URL if you want to load a local copy of jQuery from your own server.
    wp_register_script( 'jquery', "https://code.jquery.com/jquery-3.1.1.min.js", array(), '3.1.1' );
}
add_action( 'wp_enqueue_scripts', 'replace_core_jquery_version' );

এটি মূল jQueryসংস্করণ প্রতিস্থাপন করবে এবং পরিবর্তে 3.1.1গুগলের সার্ভার থেকে সংস্করণ লোড করবে ।

এছাড়াও, প্রস্তাবিত না হলেও , jQuery সংস্করণটি প্রতিস্থাপন করতে আপনি নিম্নলিখিত অতিরিক্ত CODE লাইনটি ব্যবহার করতে পারেন wp-admin:

add_action( 'admin_enqueue_scripts', 'replace_core_jquery_version' );

এইভাবে, ওয়ার্ডপ্রেস আপডেট করার পরেও, আপনার নিজের পছন্দ jQueryমতো সংস্করণ থাকবে ।

কিছুটা ভাল ফাংশন:

replace_core_jquery_versionফাংশন উপরে এছাড়াও সরিয়ে ফেলা হবে jquery-migrateওয়ার্ডপ্রেস কোর দ্বারা যোগ স্ক্রিপ্ট। এটি যুক্তিযুক্ত, কারণ jQuery এর নতুন সংস্করণটি পুরানো সংস্করণটির সাথে সঠিকভাবে কাজ করবে না jquery-migrate। যাইহোক, আপনি jquery-migrateপাশাপাশি একটি নতুন সংস্করণ অন্তর্ভুক্ত করতে পারেন । সেক্ষেত্রে পরিবর্তে নিম্নলিখিত ফাংশনটি ব্যবহার করুন:

function replace_core_jquery_version() {
    wp_deregister_script( 'jquery-core' );
    wp_register_script( 'jquery-core', "https://code.jquery.com/jquery-3.1.1.min.js", array(), '3.1.1' );
    wp_deregister_script( 'jquery-migrate' );
    wp_register_script( 'jquery-migrate', "https://code.jquery.com/jquery-migrate-3.0.0.min.js", array(), '3.0.0' );
}

আপনি কি কেবলমাত্র ফাংশন.এফপি থেকে ক্রিয়াটি সরিয়ে ফেলতে পারেন যদি আপনি দেখতে পান যে এটি আপনার থিমটি ভেঙে দিয়েছে? এটি কি আবার মূল jQuery সংস্করণে ফিরে আসবে বা এটি স্থায়ী পরিবর্তন?
নিক

1
যদি wp_enqueue_scriptsঅ্যাকশনের কলব্যাক ফাংশনটি কেবল jQuery আপডেট করে এবং jQuery অন্য কোথাও থেকে উত্সাহিত করা হচ্ছে, তবে ক্রিয়াটি সরিয়ে আসল jQuery পুনরুদ্ধার করবে। তবে, কখনও কখনও ব্রাউজারগুলি পুরানো কোডে ক্যাশে করে সার্ভারের ক্যাশে সেটিংসের উপর নির্ভর করে, সুতরাং, পরিবর্তনটি দেখার জন্য আপনাকে ব্রাউজারের ক্যাশেটি সাফ করতে হবে।
ফায়াজ

ঠিক আছে ধন্যবাদ আমি এই ব্যবস্থাটি যুক্ত করার আগে আমি কেবল এটি নিশ্চিত করতে চেয়েছিলাম যে আমি আমার সাইটটি স্ক্রু না করেছি। আপনি যা বলেছেন তা সঠিক বলে আমার মনে হয়েছে তবে আমি এটি নিরাপদে খেলতে চাই।
নিক

1
এটি স্পষ্টতই স্থায়ী নয় , কারণ এই পরিবর্তনটি কোডেডের উপর নির্ভর করে, ডাটাবেসে কোনও কিছুই সংরক্ষণ করা হয় না। সুতরাং সম্পর্কিত CODE অপসারণ পুরানো রাজ্যে ফিরে আসবে।
ফায়াজ

প্লাগইন / থিমগুলি 1.12 এর নীচে কোনও সংস্করণ আশা করলে 3.x সংস্করণের জন্য স্থানান্তরিত স্ক্রিপ্টটি কাজ করে না। এখানে সে সম্পর্কে আরও: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জাও.এ
244543/75495

5

আমি এই নির্দিষ্ট সমস্যার জন্য একটি প্লাগইন তৈরি করেছি। প্লাগইনটি ওয়ার্ডপ্রেস jQuery এর সাথে জগাখিচুড়ি করে না কারণ এটি কেবল সামনের প্রান্তে লোড করা হয়। দেখুন: ওয়ার্ডপ্রেসের জন্য jQuery পরিচালক

কেন এখনও অন্য jQuery আপডেটের / পরিচালক / বিকাশকারী / ডিবাগিং সরঞ্জাম?

কারণ বিকাশকারী কোনও সরঞ্জামই আপনাকে jQuery এবং / অথবা jQuery মাইগ্রেটের একটি নির্দিষ্ট সংস্করণ নির্বাচন করতে দেয় না। উত্পাদন এবং সংশোধিত সংস্করণ উভয়ই সরবরাহ করছে। নীচে বৈশিষ্ট্য দেখুন!

✅ কেবল সামনের প্রান্তে মৃত্যুদন্ড কার্যকর করা, ওয়ার্ডপ্রেস অ্যাডমিন / ব্যাকএন্ড এবং ডাব্লুপি কাস্টমাইজারের সাথে হস্তক্ষেপ করে না (সামঞ্জস্যতার কারণে) দেখুন: https://core.trac.wordpress.org/ticket/45130 এবং https: // কোর। trac.wordpress.org/ticket/37110

J jQuery এবং / অথবা jQuery মাইগ্রেট চালু / বন্ধ করুন

J jQuery এবং / অথবা jQuery মাইগ্রেটের একটি নির্দিষ্ট সংস্করণ সক্রিয় করুন

এবং আরো অনেক কিছু! কোডটি মুক্ত উত্স, যাতে আপনি এটি অধ্যয়ন করতে পারেন, এটি থেকে শিখতে এবং অবদান রাখতে পারেন।


প্রায় সবাই ভুল হ্যান্ডেল ব্যবহার করে

ওয়ার্ডপ্রেস আসলে jquery- কোর হ্যান্ডেল ব্যবহার করে, jquery নয়:

https://github.com/WordPress/WordPress/blob/91da29d9afaa664eb84e1261ebb916b18a362aa9/wp-includes/script-loader.php#L226

// jQuery
$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4' );
$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.12.4' );
$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.4.1' );

JQuery হাতল লোড শুধু একটি ওরফে হয় jQuery কোর সঙ্গে jQuery স্থানান্তরণের

alias লেখা সম্পর্কে আরও তথ্য দেখুন: wp_register_script একাধিক শনাক্তকারী?

এটি করার সঠিক উপায়

নীচে আমার উদাহরণে আমি অফিসিয়াল jQuery সিডিএন https://code.jquery.com এ ব্যবহার করি আমি স্ক্রিপ্ট_লোডার_ট্যাগও ব্যবহার করি যাতে আমি কিছু সিডিএন বৈশিষ্ট্য যুক্ত করতে পারি।
আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:

// Front-end not excuted in the wp admin and the wp customizer (for compatibility reasons)
// See: https://core.trac.wordpress.org/ticket/45130 and https://core.trac.wordpress.org/ticket/37110
function wp_jquery_manager_plugin_front_end_scripts() {
    $wp_admin = is_admin();
    $wp_customizer = is_customize_preview();

    // jQuery
    if ( $wp_admin || $wp_customizer ) {
        // echo 'We are in the WP Admin or in the WP Customizer';
        return;
    }
    else {
        // Deregister WP core jQuery, see https://github.com/Remzi1993/wp-jquery-manager/issues/2 and https://github.com/WordPress/WordPress/blob/91da29d9afaa664eb84e1261ebb916b18a362aa9/wp-includes/script-loader.php#L226
        wp_deregister_script( 'jquery' ); // the jquery handle is just an alias to load jquery-core with jquery-migrate
        // Deregister WP jQuery
        wp_deregister_script( 'jquery-core' );
        // Deregister WP jQuery Migrate
        wp_deregister_script( 'jquery-migrate' );

        // Register jQuery in the head
        wp_register_script( 'jquery-core', 'https://code.jquery.com/jquery-3.3.1.min.js', array(), null, false );

        /**
         * Register jquery using jquery-core as a dependency, so other scripts could use the jquery handle
         * see /wordpress/283828/wp-register-script-multiple-identifiers
         * We first register the script and afther that we enqueue it, see why:
         * /wordpress/82490/when-should-i-use-wp-register-script-with-wp-enqueue-script-vs-just-wp-enque
         * /programming/39653993/what-is-diffrence-between-wp-enqueue-script-and-wp-register-script
         */
        wp_register_script( 'jquery', false, array( 'jquery-core' ), null, false );
        wp_enqueue_script( 'jquery' );
    }
}
add_action( 'wp_enqueue_scripts', 'wp_jquery_manager_plugin_front_end_scripts' );


function add_jquery_attributes( $tag, $handle ) {
    if ( 'jquery-core' === $handle ) {
        return str_replace( "type='text/javascript'", "type='text/javascript' integrity='sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=' crossorigin='anonymous'", $tag );
    }
    return $tag;
}
add_filter( 'script_loader_tag', 'add_jquery_attributes', 10, 2 );
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.