इसका उत्तर है कि हां, theme_mod फ़ंक्शंस धीमे होंगे, लेकिन महत्वपूर्ण रूप से नहीं, और लाभ मतभेदों को दूर करते हैं।
थीम मॉड को विकल्प के रूप में संग्रहीत किया जाता है। तो, संक्षेप में, theme_mod फ़ंक्शन विकल्प फ़ंक्शन के आसपास रैपर हैं।
सबसे पहले, यह समझें कि theme_mod सेटिंग्स को एक ही विकल्प में एक सरणी के रूप में संग्रहीत किया जाता है, जिसे विशिष्ट थीम नाम के लिए रखा गया है। तो, अगर मैं ऐसा करता हूं:
set_theme_mod('aaa',123);
set_theme_mod('bbb',456);
फिर डेटाबेस में मुझे वास्तव में जो मिलता है वह एक एकल विकल्प पंक्ति है जिसमें theme_mods_themename का नाम है जिसमें ('आआ' => 123, 'bbb' => 456) के साथ क्रमबद्ध सरणी है।
अब, get_theme_mod
धीमी हो जाएगी क्योंकि यह वास्तव में दो get_option
कॉल कर रहा है। सबसे पहले, यह विषय का नाम हो जाता है। फिर, यह theme_mods_themename
विकल्प हो जाता है । तो वहीं, 50% स्पीड लॉस है। किए गए बाकी काम ज्यादातर फ़िल्टर में निहित हैं, इसमें एक अतिरिक्त फ़िल्टर कॉल है, लेकिन जब तक आपके पास उस फ़िल्टर पर कुछ नहीं होता है, यह थोड़े महत्वहीन है।
ध्यान दें कि विकल्प सिस्टम ने ऑब्जेक्ट कैश में डेटा पुनर्प्राप्त किया है, इसलिए यह यहां कई डेटाबेस कॉल नहीं कर रहा है। डेटाबेस हिट में केवल पहला उपयोग परिणाम है।
यह set_theme_mod
कुछ हद तक धीमा होगा क्योंकि यह उन्हीं दो विकल्पों को कॉल करता है, फिर यह get_option
थीम नाम को फिर से प्राप्त करने के लिए एक और कॉल करता है, और फिर यह update_option
अब बदले हुए विकल्पों के पूर्ण सेट के साथ करता है । यह एक डेटाबेस अपडेट का कारण बनता है, और यह तथ्य कि यह बहुत अधिक डेटा भेज रहा है वास्तव में एक ध्यान देने योग्य मंदी का कारण हो सकता है। कुछ बाइट्स को अपडेट करना एक बड़ी पंक्ति को अपडेट करने की तुलना में तेज है। लेकिन इतना नहीं जितना आप देखेंगे, आमतौर पर। जब तक कि आपके पास बहुत सारी सेटिंग्स नहीं हैं ...
थीम मॉड फ़ंक्शंस संभवतः समग्र रूप से अनुकूलन के कारण होते हैं, निश्चित रूप से, लेकिन फिर भी आपको get_option के बजाय उनका उपयोग करना चाहिए और जैसे कि बच्चे थीम।
सीधे विकल्प पंक्तियों का उपयोग करने के साथ समस्या यह है कि आप उन्हें सीधे उपयोग कर रहे हैं और अपनी सेटिंग्स के लिए विशिष्ट कुंजी नामों का उपयोग कर रहे हैं।
यदि मेरे पास "एएए" नामक एक विषय है और मैं इसे किसी अन्य साइट पर उपयोग करने के लिए "बीबीबी" नामक एक बच्चे का विषय बनाता हूं, तो मेरी "एएए" थीम "उदाहरण" नामक विकल्प का उपयोग कर सकती है। जब मैं एक साइट को अपडेट करता हूं, और यह मेरे विकल्प को अपडेट करता है, तो वही विकल्प अब मेरे बच्चे के विषय पर लागू होगा। अगर मैं ऐसा नहीं करना चाहता था तो क्या होगा? क्या होगा यदि मैं विकल्प सेटिंग के एक अलग सेट का उपयोग करने के लिए चाइल्ड थीम चाहता था?
थीम मोड, कुंजी के भाग के रूप में वास्तविक विषय नाम (और हार्डकोड मूल्य नहीं) को शामिल करके सुनिश्चित करते हैं कि साइट पर प्रत्येक "थीम" सेटिंग के अपने बहुत ही सेट का उपयोग करता है। मैं आगे और पीछे स्विच कर सकता हूं और सेटिंग्स उनके बीच स्थानांतरित नहीं होती हैं, वे रहते हैं कि मैंने उन्हें कैसे सेट किया। सरल, अधिक स्पष्ट, अधिक सहज।
और अगर कुछ भविष्य के कोर परिवर्तन या प्लगइन संशोधित करते हैं कि कैसे theme_mods काम करता है, तो आप बिना किसी परिवर्तन के स्वचालित रूप से उस का लाभ प्राप्त करेंगे। रैपर हमेशा धीमे रहने वाले होते हैं, यह अपरिहार्य है, यह रैपर की प्रकृति है। फिर भी, आप अभी भी PHP कोड लिख रहे हैं, मशीन भाषा नहीं। हम चीजों को सरल बनाने और कार्यक्षमता को अलग करने के लिए इस तरह के रैपर का उपयोग करते हैं। थीम्स को यह जानने, या देखभाल करने की आवश्यकता नहीं होनी चाहिए कि डेटाबेस में उनके विकल्प कैसे संग्रहीत हैं, या नामकरण कैसे काम करता है। Theme_mod फ़ंक्शन एक सरल समाधान प्रदान करता है जो क्लीनर है।
/wp-includes
परoption.php
जहांget_option()
परिभाषित किया गया है, और कम सेtheme.php
जहांget_theme_mod()
परिभाषित किया गया है, तो आप कि बाद वास्तव में कॉल देख सकते हैंget_option()
, जो अपने आप में यह का एक विस्तार भी है कि किसी भी आवश्यक फिल्टर लागू होता है के रूप में कार्य। समझा सकता है कि यह धीमा क्यों है।