मैंने टेम्प्लेट में उपयोग की गई फ़ाइल का वर्तमान नाम प्रदर्शित करने के लिए यह पाया है:
function get_template_name () {
foreach ( debug_backtrace() as $called_file ) {
foreach ( $called_file as $index ) {
if ( !is_array($index[0]) AND strstr($index[0],'/themes/') AND !strstr($index[0],'footer.php') ) {
$template_file = $index[0] ;
}
}
}
$template_contents = file_get_contents($template_file) ;
preg_match_all("Template Name:(.*)\n)siU",$template_contents,$template_name);
$template_name = trim($template_name[1][0]);
if ( !$template_name ) { $template_name = '(default)' ; }
$template_file = array_pop(explode('/themes/', basename($template_file)));
return $template_file . ' > '. $template_name ;
}
स्रोत: एक पृष्ठ पर पृष्ठ टेम्पलेट का नाम प्राप्त करें
यह काफी अच्छी तरह से काम करता है, सिवाय इसके कि बैकएंड में, टेम्पलेट सेलेक्ट बॉक्स में, मुझे यह बदसूरत अतिरिक्त प्रविष्टि मिलती है:
किसी को भी यह कैसे तय करने के लिए कोई विचार है? मुझे यह भी पता नहीं है कि इस फ़ंक्शन को बैकएंड में क्यों कहा जाता है। क्या कोई सशर्त कार्य है जैसे is_frontend()
- शायद यह समस्या को हल करेगा?
template_include
हुक नहीं है , जो t31os ने सुझाव दिया, इस मुद्दे को हल करें? या हो सकता है कि मैंने आपको गलत समझा हो।
functions.php
एक बग के रूप में चयन को कॉल करने से एक कदम कम रोकूंगा , तो मैं आपके आधार के साथ पूरी तरह सहमत हो जाऊंगा । मामलों को बदतर बनाने के लिए मैंने वर्डप्रेस कोर कोड को स्कैन किया और लगभग 5 जगहों पर पाया, जहां आपको इस मुद्दे को संभालने की अनुमति देने के लिए एक हुक हो सकता था फिर भी मुझे कोई भी नहीं मिला। मैं आपको core.trac.wordpress.org पर टिकट पोस्ट करने का सुझाव दूंगा ।