एक अलग प्लगइन के लिए एक मार्ग प्राप्त करें


10

एक प्लगइन के लिए एक रास्ता पाने के लिए आप उपयोग कर सकते हैं plugin_dir_path(__FILE__)- लेकिन यह स्पष्ट रूप से प्लग-इन के भीतर से बुलाया जाना है।

प्लग-इन ए के भीतर से आप प्लगइन बी ( ) के लिए मज़बूती से रास्ता कैसे प्राप्त कर सकते हैं pluginb/pluginb.php?

संपादित करें: इसका अनुमान है कि आप प्लग-इन के स्लग को जानते हैं कि आप इसके बाद हैं (वास्तव में आप उनसे प्राप्त कर सकते हैं get_plugins())। लेकिन मैं चाहूंगा कि यह आम तौर पर काम करे।


क्या यह किसी भी प्लगइन पर लागू होगा? या विशेष रूप से एक / कई? यदि बाद वाले, क्या वे आपके अपने हैं, या सार्वजनिक रिलीज़ हैं?
TheDeadMedic

इसलिए मैं मान रहा हूं कि आप प्लग-इन के स्लग को जानते हैं कि आप इसके बाद हैं: उदाहरण के लिए pluginb/pluginb.php, लेकिन इसका तीसरा पक्ष।
स्टीफन हैरिस

जवाबों:


9

मेरा सबसे अच्छा अनुमान होगा:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

हालांकि, यहां खतरा अभी भी प्लगइन के "बेसनेम" की धारणा है - एक अच्छी तरह से लिखा प्लगइन तब भी कार्य करेगा जब इसकी निर्देशिका और / या मुख्य फ़ाइल का नाम बदल दिया गया हो (जो भी कारण के लिए)।

जो मेरी मूल टिप्पणी पर वापस जाता है - यह किस थर्ड-पार्टी प्लगइन पर निर्भर करता है, कई लेखक प्लगइन पथ को होल्ड करने के लिए अपने स्वयं के तरीकों / स्थिरांक को परिभाषित करते हैं - यह उनके अस्तित्व की जांच करने और इनका उपयोग करने के लिए समझ में आता है (यदि उपलब्ध हो तो )।


आह ठीक है, मैंने सवाल अपडेट किया है :)। आप प्लग-इन स्लग से प्राप्त कर सकते हैं get_plugins()- मेरे उपयोग के मामले में पर्याप्त है। यदि आप कुछ विशिष्ट प्लग-इन के बाद हैं, और कुछ भी बेहतर उपलब्ध नहीं है, तो मुझे लगता है कि आप प्लग-इन नाम से खोज सकते हैं get_plugins()
स्टीफन हैरिस

+1 आदर्श रूप से स्थिरांक का उपयोग करने से बचना पसंद करेगा - लेकिन यह समाधान कम से कम जाँचता है जब उनका उपयोग किया जाता है :) - और यह है कि चीजों को कैसे करना है।
स्टीफन हैरिस

2

तो एक विधि plugin_dir_path()वर्तमान प्लग-इन के भीतर कॉल करने की है और प्लग-इन के स्लग के साथ अपने खुद के प्लगइन डायरेक्टरी नाम को बदलने के बाद आप इसमें हैं ( pluginb/pluginb.php):

तो हमारे प्लग-इन के भीतर plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

मैं इसके खिलाफ सलाह दूंगा, क्योंकि यह धारणा है कि प्लगइन बी ए के समान निर्देशिका में है (जो कि वास्तव में ऐसा नहीं होगा, अला एमयू प्लगइन्स)।
TheDeadMedic

धन्यवाद, सोचा था कि ऐसा कुछ होगा जो मुझे याद होगा :)
स्टीफन हैरिस

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