शीर्ष लेख चर से टेम्पलेट और उपाध्यक्ष के लिए पासिंग


9

मैंने एक वैरिएबल को परिभाषित किया है - चलो इसे कॉल करें $header_var, जिसे हेडर में डाल दिया गया है। एफपी फाइल। मैं चाहूंगा कि यह चर मेरी टेम्पलेट फ़ाइल (इस मामले में taxonomy.php) पर पारित हो जाए।

इसके अलावा, मैं $template_varअपने करोनोमी .php से header.php में पास होने के समान ही अन्य तरीके से कर सकता हूं।

क्या यह तब भी संभव है जब हेडर लोड होने के बाद वेरिएबल घोषित नहीं किया गया था?

मैंने वैश्विक उपयोग करने की कोशिश की है $header_varलेकिन भाग्य के बिना।

कोई सुझाव?

जवाबों:


24

मैंने एक चर को परिभाषित किया है - चलो इसे $ 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फंक्शन के सभी कोड जो चर सेट करने के लिए उपयोग किए जाते हैं, केवल एक बार चलते हैं, इसलिए आपको फ़ंक्शन को एक से अधिक बार कॉल करने पर प्रदर्शन के मुद्दों के बारे में चिंता करने की आवश्यकता नहीं है।


2
अगर मैं 1000 वोट कर सकता हूं तो यह WP टेम्पलेट डॉक्स में होना चाहिए
Benn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.