हेयर यू गो:
वर्तमान लैंडिंग पृष्ठ के लिए उपयोग में आने वाली सभी टेम्प्लेट फ़ाइलों के साथ एक HTML-सूची , जिसमें प्लगइन्स, चाइल्ड थीम और / या पेरेंट थीम कॉम्बिनेशन के सभी टेम्पलेट-पार्ट्स शामिल हैं , सभी कोड की एक पंक्ति में हैं:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
आपको यह जांचने की आवश्यकता है कि आपका सर्वर किसी भी मार्ग पर डब्बा स्लैश वापस नहीं कर रहा है । इसे सभी टेम्पलेट फ़ाइलों के बाद उपयोग करने के लिए याद रखें, जैसे कि footer.php, लेकिन व्यवस्थापक बार रेंडर करने से पहले ।
यदि admin-bar stuff
पथ शीर्ष पर, या किसी अन्य फ़ाइल में दिखाई दे रहा है, तो फ़ाइल नाम template-loader.php
को कोड की इस पंक्ति में बदल दें: जो भी फ़ाइलनाम आपको तोड़ने की आवश्यकता है। अक्सर:class-wp-admin-bar.php
यदि आपको व्यवस्थापक बार में इसकी आवश्यकता है, तो सही सूची (जल्द से जल्द) का उपयोग करें ताकि इस सूची के अंत में कोई फ़ाइल दर्ज न हो । उदाहरण के लिए:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
प्राथमिकता -5
यह सुनिश्चित करती है कि यह पहले लोड हो जाए। कुंजी को get_included_files()
सही समय पर कॉल करना है , अन्यथा कुछ सरणी-पॉपिंग की आवश्यकता है!
इसे तोड़ने के लिए:
आप PHP backtrace के बिना सभी शामिल टेम्पलेट फ़ाइलों को इकट्ठा नहीं कर सकते । Superglobals template_include
अभ्यस्त के भीतर उन सभी को इकट्ठा । दूसरा तरीका प्रत्येक टेम्प्लेट फ़ाइल में "एक मार्कर रखना" है, लेकिन अगर आपको पहले फ़ाइलों के साथ बातचीत करने की आवश्यकता है, तो आप समय और पूरे विचार के साथ तालमेल बिठाते हैं।
1) हमें वर्तमान वर्डप्रेस अनुरोध द्वारा उपयोग की जाने वाली सभी फ़ाइलों के अंदर की जांच करने की आवश्यकता है। और वे कई हैं! यदि आप 300 फ़ाइल का उपयोग कर रहे हैं, तो इससे पहले कि आपके फंक्शंस पंजीकृत न हों, तो आश्चर्य न करें।
$included_files = str_replace('\\', '/', get_included_files());
हम PHP देशी get_included_files () का उपयोग कर रहे हैं, पीछे के स्लैश को वर्डप्रेस के अधिकांश रास्तों से मिलान करने के लिए आगे स्लैश में परिवर्तित कर रहे हैं।
2) हम उस ऐरे को काट रहे हैं जहाँ से टेम्प्लेट-लोडर.फपी पंजीकृत है। उसके बाद, पॉप्युलेटेड get_included_files () में केवल टेम्प्लेट फाइल पॉप्युलेट होनी चाहिए।
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) परिणामों को कम करें, हमें विषय फ़ोल्डर या प्लगइन फ़ोल्डर तक पथ की आवश्यकता नहीं है, उपयोग में टेम्पलेट्स के रूप में, प्लगइन्स, थीम या चाइल्ड थीम फ़ोल्डर्स से मिश्रित किया जा सकता है ।
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) अंत में, सरणी से एक अच्छी HTML सूची में परिवर्तित करें
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
एक अंतिम संशोधन part3 में आवश्यक हो सकता है ) -replacement , यदि आप आवश्यक नहीं है प्लगइन्स द्वारा शामिल करना चाहते हैं । वे class-files
टेम्पलेट आउटपुट प्रोसेसिंग के दौरान देर से, और "इंटरसेप्ट" कह सकते हैं ।
हालाँकि, मैंने उन्हें दृश्यमान छोड़ना उचित समझा, क्योंकि विचार व्हाट्सएप को ट्रैक करने के लिए है , भले ही यह "टेम्पलेट" न हो, जो इस चरण में आउटपुट प्रदान करता है।