WP_CONTENT_DIR और WP_PLUGIN_DIR के बजाय मुझे क्या उपयोग करना चाहिए?


15

प्लगइन और सामग्री निर्देशिकाएँ निर्धारित करने के लिए वर्डप्रेस प्रलेखन में कहा गया है कि:

सामग्री और प्लगइन निर्देशिकाओं का मार्ग निर्धारित करते समय वर्डप्रेस निम्नलिखित स्थिरांक का उपयोग करता है। इनका उपयोग सीधे प्लगइन्स या थीम द्वारा नहीं किया जाना चाहिए , लेकिन पूर्णता के लिए यहां सूचीबद्ध हैं।

यह सूची WP_CONTENT_DIRऔर WP_PLUGIN_DIRस्थिरांक के बीच जाता है कि थीम और प्लगइन डेवलपर्स को इसका उपयोग नहीं करना चाहिए, संभवतः इस वजह से:

वर्डप्रेस उपयोगकर्ताओं को अपनी wp-content निर्देशिका को कहीं भी रखने की अनुमति देता है, इसलिए आपको कभी भी यह नहीं मानना ​​चाहिए कि प्लग-इन wp-content / plugins में होगा, या यह अपलोड wp-content / uploads में होगा, या कि थीम wp- में होंगे सामग्री / विषयों।

मार्क Jaquith भी यहाँ टिप्पणी करते हैं कि उन स्थिरांक का उपयोग नहीं किया जाना चाहिए:

WP_PLUGIN_URL या WP_PLUGIN_DIR का उपयोग न करें - प्लगइन्स प्लगइन्स निर्देशिका में नहीं हो सकते हैं।

तो, इन स्थिरांक का उपयोग किए बिना प्लगइन्स, wp-content और थीम फ़ोल्डर्स के लिए पूर्ण पथ को संदर्भित करने का स्वीकृत तरीका क्या है?

एक सरल उदाहरण के रूप में, सभी स्थापित प्लगइन्स के पूर्ण पथ को आउटपुट करने के लिए, मैं यह कर सकता हूं:

<?php
$plugins = get_plugins();

foreach ($plugins as $file => $details) {
    echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}

जो इस तरह एक सूची का उत्पादन करता है:

/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php

(यदि मैं उदाहरण के लिए, साइट बैकअप के भाग के रूप में उपयोगकर्ता को चुनिंदा रूप से संग्रह करने की अनुमति देने के लिए प्लगइन लिख रहा था, तो मैं ऐसा करना चाह सकता हूं।)

यदि उपयोग WP_PLUGIN_DIRकरना गलत है, तो सुझाया गया विकल्प क्या है? wp_upload_dir()प्लगइन्स, थीम और wp-content फ़ोल्डर के लिए कोई समान नहीं है जो मुझे मिल सकता है, जो संभावित भटकने वाले विषयों और प्लगइन्स रूट निर्देशिकाओं को समस्याग्रस्त बनाता है।



2
@CharlesClarkson मैं अपने प्रश्न के पहले वाक्य में उस पृष्ठ का संदर्भ देता हूं। यह कहता है कि उपरोक्त स्थिरांक का उपयोग नहीं करना है, लेकिन जैसी चीजों के विकल्प का सुझाव नहीं देता है WP_PLUGIN_DIR, इसलिए यहां मेरा सवाल है।
निक

जवाबों:


17

वर्तमान पथ या गहरी नेस्टेड में संदर्भ फ़ाइल

वर्तमान पथ का संदर्भ देने के लिए

plugin_dir_path( __FILE__ )."further/nesting/here.css";

जो प्लगइन्स और थीम्स में काम करता है ।

एक प्लगइन में संदर्भ यूआरएल / उरी

एक प्लगइन या थीम फ़ाइल को इंगित करने के लिए, का उपयोग करें

plugins_url( "path/to/file", __FILE__ );

जो केवल प्लगइन्स में काम करता है

संदर्भ URl / wp-adminफ़ोल्डर में URi

हमेशा उन्हें इंगित करें admin_url( 'some/path' );। नहीं है get_admin_url()के रूप में अच्छी तरह से।

संदर्भ यूआरएल / wp-includesफ़ोल्डर में उरी

उन्हें इशारा किया includes_url( 'some/path' );

घर के स्थानों के सापेक्ष एक URL / URi

नहीं है home_url( 'etc' );या get_home_url()उस के लिए। इसी तरह की है get_site_url()और site_url()। फिर वहाँ भी है network_home_url()। और आपको मिल गयाnetwork_admin_url()

wp-content या नामांकित निर्देशिका

आप wp-contentफ़ोल्डर का नाम फिर से परिभाषित कर सकते हैं । इसलिए आप उपयोग करेंcontent_url() वहां का ।

प्लगइन्स फ़ोल्डर url कैसे प्राप्त करें?

यदि WP_PLUGIN_DIR का उपयोग करना गलत है, तो सुझाया गया विकल्प क्या है?

बस उपयोग करें plugins_url() किसी भी पैरामीटर के बिना ।

यदि आप इसे एक प्लगइन के लिए उपयोग करते हैं, यह MU प्लगइन्स के लिए भी काम करता है।

EDIT # 1 यदि आप वर्तमान प्लगइन के पथ में रुचि रखते हैं, तो उपयोग करें plugin_basename();

EDIT # 2 यदि आप सभी बग़ल में सक्रिय प्लगइन्स में रुचि रखते हैं, का उपयोग करेंwp_get_active_network_plugins();

यदि आप मल्टीसाइट पर नहीं हैं, तो साथ जाएं wp_get_active_and_valid_plugins();। यह मल्टीसाइट / नेटवर्क को ध्यान में रखेगा। ध्यान रखें कि यह उन्हें ध्यान में रखेगा यदि आप sunrise.phpमल्टीसाइट पर नहीं हैं, लेकिन एक ड्रॉपिन मिला है ।

आप उन्हें पुनः प्राप्त कर सकते हैंget_option( 'active_plugins' ); , जो अनुशंसित नहीं है क्योंकि यह फ़िल्टर और प्लगइन सत्यापन को ध्यान में नहीं रखता है, जो कई मौकों पर होता है।


आगे की पढाई

यह सूची आगे बढ़ती है। QueryPosts.com पर खोज परिणामों पर एक नज़र डालेंअधिक जानकारी के लिए ।

यह लेख सभी रास्तों के बारे में पूर्ण गहराई में जाता है ।


3
इसके लिए धन्यवाद, लेकिन आपका उत्तर पूर्ण सर्वर पथों के बजाय URLs से निपटने के लिए लगता है, जो कि मुझे इसमें रुचि थी। उदाहरण के लिए, plugins_url()URL को प्लगइन्स फ़ोल्डर में लौटाता है, सर्वर पर निर्देशिका का पूर्ण पथ नहीं। क्या निर्देशिका से निपटने के लिए समान कार्य हैं जिनके बारे में मुझे जानकारी नहीं है? या क्या सलाह है कि WP_PLUGIN_DIRनिरंतर का उपयोग गलत नहीं है?
निक

(मैं विशेष रूप से प्लगइन के अलावा स्थापित प्लगइन्स का पूरा रास्ता खोजने में दिलचस्पी रखता हूं, जिसमें मेरा अपना कोड होता है, जो समझाने में मदद करता है।)
निक

@Nick अपडेट देखें।
kaiser

लेख "सभी प्लगइन्स के बारे में पूर्ण गहराई में जाता है" अब उपलब्ध नहीं है। और मैं अभी भी समझ में नहीं आ रहा है कि प्लगइन्स निर्देशिका का पूर्ण पथ कैसे उपयोग किए बिना प्राप्त किया जा सकता है WP_PLUGIN_DIR
XedinUnogn

4
  1. यह वर्तमान प्लगइन की डायरेक्टरी का सर्वर पथ लौटाता है:

    plugin_dir_path(__FILE__)
    
    // example: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/

    संदर्भ: https://codex.wordpress.org/Function_Reference/plugin_dir_path

    के साथ भ्रमित नहीं होना:

    plugins_dir_path(__FILE__)

    (उस पर बहुवचन "प्लगइन एस " नोटिस करें ।)

  2. चूंकि आप नहीं चाहते कि प्लगइन डायरेक्टरी का नाम वापस आए, इसलिए हमें उसे अलग करना होगा। यहाँ एक फ़ंक्शन है जो प्लगइन निर्देशिका और फ़ाइल नाम लौटाता है:

    plugin_basename(__FILE__)
    
    // example: exampleplugin/exampleplugin.php
  3. लेकिन निश्चित रूप से हम प्लगइन का नाम भी नहीं चाहते हैं, इसलिए हमें plugin_basename(__FILE__)पहले से बाहर पट्टी करने की आवश्यकता होगी । प्लगइन का फ़ाइल नाम वापस करने के लिए:

    basename(__FILE__)
    
    // example: exampleplugin.php
  4. तो प्लगइन्स निर्देशिका के लिए पथ बनाने के लिए इनका उपयोग करने के लिए , हम str_replace()फ़ंक्शन का उपयोग कुछ इस तरह कर सकते हैं :

    $myBnm = basename(__FILE__); // value: exampleplugin.php
    $myDir = plugin_basename(__FILE__); // value: exampleplugin/exampleplugin.php
    $myStr = str_replace($myBnm,"",$myDir); // value: exampleplugin/
    $myPth = plugin_dir_path(__FILE__); // value: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/
    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
  5. और यदि आवश्यक हो, तो उस अंतिम पंक्ति को दोहराने के उपयोग के लिए एक चर को सौंपा जा सकता है।

    के बजाय:

    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    कुछ का उपयोग करें:

    $thePlgDir = str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    और बाद में, जब जरूरत हो:

    return $thePlgDir;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.