मैंने एक चर को परिभाषित किया है - चलो इसे $ Header_var कहते हैं, जिसे शीर्ष लेख में रखा गया है। php फ़ाइल। मैं चाहूंगा कि यह चर मेरी टेम्पलेट फ़ाइल (इस मामले में taxonomy.php) पर पारित हो जाए।
global
चाल करने के लिए एक बहुत ही अनुशंसित तरीका नहीं है, लेकिन यह काम करता है यदि आप इसे ठीक से उपयोग करते हैं: चर को परिभाषित करने से पहले इसे header.php
फिर से taxonomy.php
डालें और चर को पुनः प्राप्त करने से पहले (get_header () को शामिल करने के लिए कहा जाए header.php
)
// in header.php
global $header_var;
$header_var = 'A value';
// in taxonomy.php
get_header();
global $header_var;
echo $header_var; // 'A value'
मैं उसी तरह से अन्य तरीके से करने में सक्षम होना चाहूंगा, जैसे मेरे taxonomy.php से शीर्ष लेख के लिए एक $ template_var पास करना। क्या यह तब भी संभव है जब हेडर लोड होने के बाद वेरिएबल घोषित नहीं किया गया था?
यह PHP है, न जादू और न ही टाइम मशीन: वर्डप्रेस ब्रह्मांड के बाकी हिस्सों की तरह समय के नियम लागू होते हैं ।
तो, नहीं, आप समय में एक चर वापस नहीं कर सकते हैं, लेकिन आमतौर पर, टेम्पलेट्स में, आप header.php
कॉल करके शामिल करते हैं get_header()
ताकि यदि आप उस फ़ंक्शन को कॉल करने से पहले एक चर सेट करते हैं, तो वैश्विक चाल भी काम करेगी:
// in header.php
global $template_var;
echo $template_var; // 'A value'
// in taxonomy.php
global $template_var;
$template_var = 'A value'
get_header();
हालाँकि, अगर आपको चर header.php
और खाके में चर साझा करने की आवश्यकता है , तो सबसे अच्छी बात यह है कि उन्हें हेडर में और न ही खाके में घोषित किया जाए, लेकिन जब चर घोषित किया जाना है तो नियंत्रण के लिए कार्रवाई हुकfunctions.php
का उपयोग करना।
एक उपयोगी हुक वह 'template_redirect'
जगह है जहां आपके पास वर्तमान क्वेरी तक पहुंच है और इसे पहले header.php
लोड किया जाता है और टेम्पलेट लोड किए जाते हैं।
एक मोटा उदाहरण:
// in functions.php
add_action( 'template_redirect', 'get_my_shared_vars' );
function get_my_shared_vars() {
static $shared_vars = NULL;
if ( empty( $shared_vars ) ) {
$shared_vars = array( 'header_var' => 'An header value' );
if ( is_tax() || is_category() || is_tag() ) {
$shared_vars['taxonomy_var'] = 'A taxonomy value';
}
}
return $shared_vars;
}
// in header.php
$shared_vars = get_my_shared_vars();
echo $shared_vars['header_var']; // 'An header value'
// in taxonomy.php
$shared_vars = get_my_shared_vars();
echo $shared_vars['taxonomy_var']; // 'A taxonomy value'
पिछले कोड में, static
कीवर्ड के लिए धन्यवाद get_my_shared_vars
फंक्शन के सभी कोड जो चर सेट करने के लिए उपयोग किए जाते हैं, केवल एक बार चलते हैं, इसलिए आपको फ़ंक्शन को एक से अधिक बार कॉल करने पर प्रदर्शन के मुद्दों के बारे में चिंता करने की आवश्यकता नहीं है।