मुझे PHP में थीम URL कैसे मिलेगा?


38

मुझे विषय की छवि / हेडर निर्देशिका में छवि का संदर्भ देने के लिए अपनी थीम निर्देशिका का URL प्राप्त करने की आवश्यकता है। यह PHP में कैसे किया जाता है?

जवाबों:


47

यह फ़ंक्शन थीम निर्देशिका URL लौटाएगा ताकि आप इसे अन्य कार्यों में उपयोग कर सकें:

get_bloginfo('template_directory');

वैकल्पिक रूप से, यह फ़ंक्शन ब्राउज़र में थीम डायरेक्टरी URL को प्रतिध्वनित करेगा :

bloginfo('template_directory');

इसलिए थीम images/headersफ़ोल्डर में एक छवि के लिए एक उदाहरण होगा:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />

ध्यान दें: यह आपको मूल विषय का रास्ता देगा यदि आप वर्तमान में बाल विषय का उपयोग कर रहे हैं, न कि सक्रिय बाल विषय का। नीचे दिया गया एक लंबा उत्तर इसे और अधिक विस्तार से बताता है।
जेसन

2
आप बस उपयोग कर सकते हैंget_template_directory_uri()
पे

32

क्या @EAMann एक चेतावनी के साथ, ने कहा। एरिक सामान्य दृष्टिकोण और कार्यों bloginfo()और get_bloginfo()काम के बारे में सही है और 'template_directory'आपको (अधिकांश) थीम के लिए आवश्यक मान प्राप्त करने के लिए पैरामीटर कैसे पास करना है ।

हालाँकि, एक चेतावनी है और यह चेतावनी नए बाल विषयों के साथ है । यदि आप एक बाल विषय का उपयोग कर रहे हैं तो 'template_directory'संभवतः वह नहीं है जो आप चाहते हैं जब तक कि आप वास्तव में एक छवि को संदर्भित करने का प्रयास नहीं कर रहे हैं जो कि मूल विषय निर्देशिका में है। चाइल्ड थीम के लिए आप जो चाहते हैं, वह पास हो जाता है stylesheet_directory(मुझे पता है, मुझे पता है, नाम आपको यह नहीं बताते हैं कि वे क्या हैं लेकिन हे, बस यही तरीका है!) एरिक के जवाब से कुछ उधार लेते हुए stylesheet_directoryइस तरह दिखना होगा ( मैंने उदाहरण को छोटा कर दिया ताकि यह लपेट न जाए):

<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />

उस बिंदु को स्पष्ट करने के लिए मैंने एक त्वरित स्टैंडअलोन फ़ाइल लिखी जिसे आप अपनी वेबसाइट के रूट में छोड़ सकते test.phpहैं और यह देख सकते हैं कि यह आउटपुट क्या है। पहले ट्वेंटीटेन जैसे नियमित विषय के साथ दौड़ें और फिर बच्चे के विषय के साथ दौड़ें:

<?php
/*
* test.php - Test the difference between Regular and Child Themes
*
*/

include "wp-load.php";

$bloginfo_params = array(
    'admin_email',
    'atom_url',
    'charset',
    'comments_atom_url',
    'comments_rss2_url',
    'description',
    'home',
    'html_type',
    'language',
    'name',
    'pingback_url',
    'rdf_url',
    'rss2_url',
    'rss_url',
    'siteurl',
    'stylesheet_directory',
    'stylesheet_url',
    'template_directory',
    'template_url',
    'text_direction',
    'url',
    'version',
    'wpurl',
);

echo '<table border="1">';
foreach($bloginfo_params as $param) {
    $info = get_bloginfo($param);
    echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';

यदि आप उन चीजों को नोटिस करते हैं जो आप नोटिस कर सकते हैं कि आपके पास bloginfo()और पास करने के लिए बहुत कुछ है get_bloginfo(); विचारों के लिए नीचे दिए गए कोड और स्क्रीनशॉट का अध्ययन करें।

स्क्रीनशॉट को देखकर आप देख सकते हैं कि एक नियमित विषय के लिए एक stylesheet_directoryही चीज़ लौटाता है, 'template_directory'लेकिन एक अलग मूल्य, और शायद एक बच्चे के विषय के लिए आपकी आवश्यकता है।

WordPress में चाइल्ड थीम के साथ और बिना get_bloginfo के रिटर्न मान
(स्रोत: mikeschinkel.com )

इस स्क्रीनशॉट पर स्पष्टता के लिए, wp30.devएक डोमेन है जो केवल मेरे स्थानीय कंप्यूटर पर चलता है। यह वर्तमान में वर्डप्रेस 3.0.1 का एक उदाहरण है और इसे मेरे लैपटॉप पर 127.0.0.1(उसी के रूप में localhost) कॉन्फ़िगर किया गया है और मैं इसका उपयोग इस तरह के तदर्थ उदाहरणों के परीक्षण के लिए करता हूं। मैंने मैक ओएस एक्स पर एक सुविधा के रूप में VirtualHostX का उपयोग किया, जिससे मुझे उन निजी गैर-रिटेबल .devडोमेन को सेट करने में मदद मिली, लेकिन कोई भी इसे कंप्यूटर की होस्ट फ़ाइल और द एडिट करके मैन्युअल रूप से कर सकता है? httpd.conf फ़ाइल।

वैसे, यदि आप बाल विषय-वस्तु से परिचित नहीं हैं, तो दो अन्य वर्डप्रेस उत्तर जो मदद कर सकते हैं:


वाह, बहुत बढ़िया जवाब। मैं अभी जिस विषय पर काम कर रहा था, उससे मैं आलसी था और उसने बाल विषय नहीं बनाया, लेकिन यह भविष्य में बहुत मददगार होगा। उस स्क्रिप्ट पर भी बधाई। खैर कोडित। धन्यवाद!
माइकल क्रैंशव

हाय, अच्छा जवाब! मैं आमतौर पर उपयोग करता हूं get_stylesheet_directory_uri()। क्या मुझे सादे ओल का उपयोग करना चाहिए get_stylesheet_directory()?
djb

13

थीम की पूरी संरचना दो विकल्पों में से शीर्ष पर templateबनती है - (पेरेंट थीम फोल्डर नामरे को पकड़ना) और stylesheet(चाइल्ड थीम फोल्डर नम्र को पकड़ना)। यदि कोई बाल विषय नहीं है, तो ये समान हैं।

सीधे पहुँच विकल्प के बजाय फ़िल्टर का लचीलापन होने के लिए, तदनुसार get_template()और हैं get_stylesheet()

अब केवल एक चीज गायब है जो थीम फ़ोल्डर स्थान के साथ संयोजन करना है। इस के साथ किया जा सकता है get_theme_root_uri()और फिर आसानी से में लिपटे get_template_directory_uri()और get_stylesheet_directory_uri()

[get_]bloginfo()template_directoryया stylesheet_directoryतर्कों के साथ केवल ये लपेटता है और इसे इस तरह उपयोग करने का बहुत कम कारण है। मैं कहूंगा कि यह केवल तर्क कहने से भ्रमित है निर्देशिका (आमतौर पर स्थानीय पथों से संबंधित है), लेकिन URL वापस करना।

Sumary:

  • केवल या मूल विषय get_template_directory_uri()को संदर्भित करने के लिए उपयोग करें
  • केवल या बच्चे के विषय के get_stylesheet_directory_uri()लिए उपयोग करें

-1

मैं इसका उपयोग करता हूं (dirname(get_bloginfo('stylesheet_url')))


1
कोई स्पष्टीकरण नहीं कि यह अन्य समाधानों से बेहतर क्यों है?
FUXIA
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.