নতুন ডব্লিউপি_কাস্টমাইজ এপিআই - এটি হুডের নীচে কীভাবে কাজ করে?


16

আমি লক্ষ্য করেছি যে আপনি যদি নতুন "কাস্টমাইজ" বৈশিষ্ট্যটি পরিবর্তন করেন তবে আপনি যদি আইফ্রেমে পূর্বরূপ ডকুমেন্টের মধ্যে একটি অন্য পৃষ্ঠায় নেভিগেট করেন, আপনার পরিবর্তনগুলি এখনও সংরক্ষণ না করা সত্ত্বেও প্রযোজ্য।

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

তবে সাইটটি কীভাবে জানতে পারে যে এটি কাস্টমাইজ মোডে রয়েছে? কারণ আমি লিঙ্কগুলিতে বা এর মতো অন্য কোনও সংযুক্ত যুক্তি দেখতে পাচ্ছি না।

উত্তর:


9

এখানে কয়েকটি বিট প্রয়োগ হয় যা প্রয়োগ হয় তবে এর সংক্ষিপ্ত আকারে এই কোডটি রয়েছে customize-preview.js:

this.body.on( 'click.preview', 'a', function( event ) {
    event.preventDefault();
    self.send( 'scroll', 0 );
    self.send( 'url', $(this).prop('href') );
});

ইভেন্ট.প্রিভেন্টডিফল্ট লিঙ্কগুলি আসলে কাজ করা থেকে বাধা দেয়। নিম্নলিখিত কোডটি তারপরে একটি বার্তা প্রেরণ করে প্রেরণ করে ক) পৃষ্ঠার শীর্ষে ফিরে স্ক্রোল করুন এবং খ) ইউআরএল পরিবর্তন করুন।

এখানে মেসেজিংয়ের কারণ হ'ল এখানে কেবল একজন আইফ্রেমে নেই, দুটি আছে। আপনি যে পৃষ্ঠায় ক্লিক করেছেন সেই পৃষ্ঠায় কাস্টমাইজারের সেটিংস যুক্ত করে অন্য আইফ্রেমের অভ্যন্তরে লোড করা হবে ( POSTসত্যিকারের মাধ্যমে ), তারপরে একটি বিবর্ণ প্রভাব পুরানোটিকে ফেইড করতে এবং বিনা বাধায় নতুনটিতে বিবর্ণ হয়ে যায়। এটি নতুন পৃষ্ঠাতে স্যুইচ করলে এটি পর্দাটি সাদা এবং কুশল হয়ে যাওয়া এবং জ্বলজ্বলে আটকা দেয়।

এছাড়াও থিম কোডে ফিল্টারিং এবং এগুলি করার প্রয়োজনীয়তা দূর করে এবং সম্ভাব্যভাবে পৃষ্ঠার চেহারা পরিবর্তন করতে পারে। থিমটি এর বিষয়বস্তুতে উল্লেখযোগ্য পরিবর্তন না করেই যেমন প্রদর্শিত হয়।

ফর্ম জমা দেওয়ার কাজটি মোটেও আটকাতে অনুরূপ কোড উপস্থিত রয়েছে (এটি কেবল কিছুই করে না) এবং আরও অনেক কিছু।

কাস্টমাইজার মানগুলি বাধা এবং পরিচালনা করার জন্য ফিল্টারটি রয়েছে class-wp-customize-setting.phppreview()ফাংশন, ফিল্টার অন্তর্মুখী মান হ্যান্ডেল করা প্রয়োজন যোগ _preview_filter()ফাংশন যা ফিল্টার। এটি যখন পরিবর্তিত বিকল্প হিসাবে বিবেচিত হয় তখন এটি কেবল কলগুলি get_option()বা get_theme_mod()নোটিশগুলি গ্রহণ করে এবং পরিবর্তে পরিবর্তিত মানগুলি দেয়।


1

আপনি লক্ষ্য করবেন যে আপনি যখন কাস্টমাইজারের পূর্বরূপ উইন্ডোতে কোনও লিঙ্ক ক্লিক করেন, তখন উত্সাহিত করা POSTঅনুরোধটি একটি সাধারণ পরিবর্তে একটি অনুরোধ GET। কাস্টমাইজারটি POSTনিম্নলিখিত ফর্ম ডেটা সহ যে কোনও লিঙ্ক ক্লিককে ওভাররাইড করছে এবং পরিবর্তে এটি করছে বলে মনে হচ্ছে :

wp_customize: on
theme: themename
customized: {json-encoded-options-here}
customize_messenger_channel: preview-1

কাস্টমাইজড ক্ষেত্র কি, বিকল্প পরিবর্তিত করে থাকেন রয়েছে যাতে যে যেখানে ডেটা আপনার থিম মাধ্যমে গৃহীত হচ্ছে। কাস্টমাইজার কোডটি তারপরে অনুরোধ করা হয় তখন আপনার থিমের বিকল্পগুলি (একটি ফিল্টারের মাধ্যমে, আমি নিশ্চিত না যে কোনটি ঠিক একটিটি) বাধা দেয় এবং কাস্টমাইজড প্যারামিটারের মানগুলির সাথে তাদের প্রতিস্থাপন করে ।


2
এখানে একবার দেখুন: /wp-includes/class-wp-customize-manager.php...
brasofilo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.