ডাব্লু পিপি কাস্টমাইজ করে জেএস পদ্ধতিগুলি বাড়ানো কি সম্ভব?


9

আমি ভাবছিলাম যে বেনামে থাকা apiঅবজেক্টের পদ্ধতিগুলি বাড়ানো সম্ভব কিনা wp-admin/js/customize-control.js। আমার নিজের কাস্টম যুক্তি দিয়ে আমার এই পদ্ধতির একটি ওভাররাইট করা দরকার তবে আমি সন্দেহ করি যে এটি তাত্ক্ষণিকভাবে অনুরোধ করা ফাংশন এক্সপ্রেশনটিতে আবৃত হওয়ার কারণে এটি সম্ভব নয়:

/* globals _wpCustomizeHeader, _wpMediaViewsL10n */
(function( exports, $ ){
// code
})( wp, jQuery );

যতদুর আমি দেখতে পারেন, আমি এবং উইন্ডো বস্তু থেকে প্রোটোটাইপ প্রসারিত করতে, কারণ এটি বেনামে মৃত্যুদন্ড কার্যকর হচ্ছে সক্ষম থেকে পাওয়া যায় না নই window.wp.customize। এমন ধারণা সম্ভব কি কোন ধারণা? এমনকি এটি টগল () পদ্ধতিগুলির ডকুমেন্টেশন / বিবরণে ওভাররাইড করার কথা উল্লেখ রয়েছে: https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110 , কিন্তু আমি 'নিশ্চিত না যে এগুলি কেবলমাত্র পুরো জেএস ফাইলকেই কাঁটাচামচ করে, ডাব্লুপি সংস্করণটি সনাক্ত করে এবং আপনার নিজের তৈরি করা বা যদি সেগুলির অর্থ বা অন্যরকম কিছু বোঝায় mean

নোট করুন যে এটির সাথে এটি সম্ভব হওয়া উচিত বলে মনে হয় wp.customize.{method}.extend({ foo: // replace method foo here })তবে এটি কেবলমাত্র পাবলিক বেস শ্রেণি / অবজেক্টের ক্ষেত্রে প্রযোজ্য, না এমনগুলিwp-admin/js/customize-control.js


3
যদিও apiনামবিহীন তবে এটি কেবলমাত্র প্রতিশব্দ wp.customize(লাইন 3 দেখুন) যা বিশ্বব্যাপী অ্যাক্সেসযোগ্য। তবে দেখে মনে হচ্ছে নিয়ন্ত্রণের জন্য ব্যবহৃত অন্য অবজেক্ট মডেলটি readyফাংশনটিকে কল করে initializeযাতে কোনও পদ্ধতিতে ওভাররাইট করার সুযোগ (যেমন সর্বদা অনেক দেরি হয়ে যায়) না পায় - আপনি কী প্রসারিত করার চেষ্টা করছেন?
দশম

তত্ত্বগতভাবে, এটি অর্থবোধ করে - পরামর্শ প্রশংসা করে। আমার ক্ষেত্রে, আমি অনুভব করেছি যে এই পদ্ধতিটি বেশ হ্যাক এবং আমার ব্যবহারের ক্ষেত্রে আরও একটি উপযুক্ত সমাধান নিয়ে আসতে সক্ষম হয়েছিল। তবে, ওয়ার্কিং কোড সহ একটি উত্তর এখনও কারও কাছে ব্যবহারযোগ্য হতে পারে যার কাছে তাদের ব্যবহারের ক্ষেত্রে অন্য কোনও বিকল্প নেই। আমি যা পরিকল্পনা করছিলাম তার সাথে পারফরম্যান্স যাইহোক ভয়ঙ্কর হত।
ব্রায়ান

1
আমি জেএস বিশেষজ্ঞ নই। তবে সর্বদা আমার এক্সটেনশানগুলি রিফ্রেশ করতে কাস্টমাইজার স্ক্রিপ্টটিতে আমার একটি ছোট থিমের একটি অ্যাড রয়েছে। আমি wp.customizeএই অবজেক্টের সাথে কাজ করি এবং ফাংশন যুক্ত করি । উত্স উদাহরণ হিসাবে এখানে দেখুন - github.com/bueltge/Docamentation/blob/master/js/…
515

উত্তর:


5

আমি আপনার প্রশ্নে আমার ছোট মন্তব্য বৃদ্ধি করব। তবে আবার ইঙ্গিত; আমি জেএস বিশেষজ্ঞ নই। অনুসরণের উত্স, ইঙ্গিতগুলি কেবলমাত্র আমার স্যান্ডবক্সের মতো বিভিন্ন চেক, উদাহরণগুলির জন্য কাস্টমাইজারের সাথে খেলতে ব্যবহৃত হয়েছিল ।

wp.customize

ডাব্লুপি থিম কাস্টমাইজার ইন্টারফেস কেন্দ্রগুলি বোঝার চারপাশে wp.customize জাভাস্ক্রিপ্ট অবজেক্টটি বোঝা যাচ্ছে। wp.customizeবস্তুর গুরুত্বপূর্ণ এবং আপনি শুরু এটি সেট করা উচিত নয়।

সরাসরি উদাহরণ

অনুসরণ ছোট উদাহরণ এটি প্রদর্শিত। প্রথমে আমি apiকাস্টমাইজারের অবজেক্টে ভ্যার সেট করেছিলাম । এর পরে আমি আমার কাস্টম ক্ষেত্রগুলিতে সেট করেছিলাম apiএবং লাইভ পূর্বরূপের জন্য ফলাফলটি রিফ্রেশ করতে ছোট jQuery উত্স দিয়ে এটি বাড়িয়েছি।

( function( $ ) {
    var api = wp.customize;

    // Site title and description.
    api( 'blogname', function( value ) {
        value.bind( function( to ) {
            $( '#header h1 a, #footer a.site-name' ).html( to );
        } );
    } );

    api( 'blogdescription', function( value ) {
        value.bind( function( to ) {
            $( '#header p.site-description' ).html( to );
        } );
    } );

} )( jQuery );

সেটিংস এবং নিয়ন্ত্রণসমূহ

কন্ট্রোল অবজেক্টগুলি সংরক্ষণ করা হয় wp.customize.controlএবং সেটিং অবজেক্টগুলিতে সঞ্চিত থাকে wp.customize। মান শ্রেণীর অনেকগুলি কার্যকারিতা রয়েছে, সেখানে আপনাকে সহায়তা করতে পারে।

  • উদাহরণ (আইডি) - নির্দিষ্ট আইডির সাহায্যে সংগ্রহ থেকে কোনও বস্তু পান।
  • has (id) - সত্যায় ফিরে আসুন, যদি সংগ্রহে নির্দিষ্ট আইডির সাথে কোনও বস্তু থাকে এবং অন্যথায় এটি মিথ্যা হয়।
  • যোগ করুন (আইডি, মান) - একটি নির্দিষ্ট আইডি এবং মান সহ সংগ্রহের মধ্যে একটি অবজেক্ট যুক্ত করুন।
  • মুছে ফেলুন (আইডি) - সংগ্রহ থেকে অবজেক্টটি সরান।
  • create (id) - ডিফল্ট কনস্ট্রাক্টর ব্যবহার করে একটি নতুন অবজেক্ট তৈরি করুন এবং এটি সংগ্রহে যুক্ত করুন।
  • প্রতিটি (কলব্যাক, প্রসঙ্গ) - সংগ্রহের মধ্যে থাকা উপাদানগুলির উপরে আইট্রেট করুন।

কাস্টম সেটিংস

এই ফাংশনগুলির সাহায্যে আমরা আমাদের কাস্টম সেটিংস উন্নত করতে পারি।

var api = wp.customize,
    mysetting = api.instance( 'my_custom_setting' );

একটি অ্যারের জন্য ব্যবহারযোগ্য

var api = wp.customize,
    mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' );

পাওয়া

কনসোলের ফলাফল দেখুন।

console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() );

সেট

আপনি ফাংশনের মাধ্যমে সেটিংস মানগুলিও পরিবর্তন করতে পারেন set

api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) );

নিয়ন্ত্রণ হিসাবে পেতে, অবজেক্ট হিসাবে

console.log( api.control.instance( 'my_custom_setting_field' ) );

সহায়ক উত্স

  • WP-অ্যাডমিন / JS / কাস্টমাইজ-controls.js
  • WP-অন্তর্ভুক্ত / JS / কাস্টমাইজ-preview.js
  • WP-অন্তর্ভুক্ত / JS / কাস্টমাইজ-base.js
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.