नया WP_Customize API - यह हुड के तहत कैसे काम करता है?


16

मैंने देखा कि यदि आप परिवर्तन को नया "अनुकूलित" सुविधा देते हैं, जब आप iframe पूर्वावलोकन दस्तावेज़ के भीतर किसी भिन्न पृष्ठ पर नेविगेट करते हैं, तो भी आपके परिवर्तन लागू होते हैं, भले ही वे बिना सहेजे हुए हों।

ऐसा लगता है कि WP कहीं अस्थायी परिवर्तन का भंडारण कर रहा है, और यह साइट पर उन्हें लागू करता है यदि साइट "अनुकूलित" मोड में देखी जाती है।

लेकिन साइट को कैसे पता है कि यह कस्टमाइज़्ड मोड में है? क्योंकि मुझे लिंक या उस जैसी किसी भी चीज़ के लिए कोई क्वेरी तर्क दिखाई नहीं देता है।

जवाबों:


9

यहाँ कुछ बिट्स हैं जो लागू होते हैं, लेकिन इसकी कमी इस कोड में है customize-preview.js:

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

Event.preventDefault लिंक को वास्तव में काम करने से रोकता है। निम्न कोड फिर एक संदेश को यह कहते हुए वापस भेजता है कि) पृष्ठ के शीर्ष पर वापस स्क्रॉल करें और बी) URL बदलें।

यहाँ संदेश भेजने का कारण यह है कि वहाँ केवल एक iframe नहीं है, दो हैं। आपके द्वारा क्लिक किया गया पृष्ठ वास्तव में एक और iframe के अंदर लोड किया जाता है, जिसमें कस्टमाइज़र की सेटिंग्स से इसे जोड़ा जाता है ( 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...
ब्रासोफिलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.