मैं एक प्लगइन संस्करण संख्या को गतिशील रूप से प्राप्त करना चाहता हूं


10

हाउडी, मैंने हाल ही में अपने प्लगइन में एक "इन-अपडेट" चैंजिस्ट प्रदर्शन (बहुत अच्छा) को लागू करने के लिए W3TC को बंद कर दिया है , लेकिन एक अजीब सा कोड है जिससे मैं बचना पसंद करूंगा।

यदि आप इस फ़ाइल के शीर्ष पर देखते हैं, तो आपको निम्न कोड दिखाई देगा:

define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // This needs to be kept in synch with the version above.

Ick। : पी

इसे अद्यतित रखने की आवश्यकता है, इसलिए फ़ंक्शन आपके प्लगइन और वर्तमान स्थिर संस्करण के बीच डेल्टा कर सकता है।

मैं कोडेक्स अवलोकन किया है, और यह नहीं मिल सकता है, लेकिन वहाँ है मिल गया एक प्लगइन का संस्करण प्राप्त करने के लिए एक API समारोह होने के लिए।

कोई सुराग?

जवाबों:



14

एक फ़ंक्शन है जिसे get_plugin_data () कहा जाता है । यदि आपको निम्न करने की आवश्यकता हो, तो इसे मुख्य प्लगइन फ़ाइल के भीतर से कॉल करने का प्रयास करें:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];

लेकिन जैसा कि दूसरे सवाल के जवाब में कहा गया है, प्रदर्शन के लिए बेहतर है कि आप एक पीएचपी वैरिएबल को परिभाषित करें जैसा आप कर रहे हैं।


धन्यवाद! उम्मीद है, प्रदर्शन बहुत बड़ी बात नहीं होगी, क्योंकि यह केवल एक बार कहा जाता है, और इसमें कर्ल कॉल शामिल है। मुझे अभी पूरी जगह संस्करण संख्या की कई प्रतियाँ होने से परेशानी हुई है।
क्रिस मार्शल

1
यह काम नहीं लगता है। मुझे यह चेतावनी मिलती है Call to undefined function get_plugin_data()
अरी

@AriSusanto आप इसे सामने के छोर पर उपयोग करने की कोशिश कर रहे हैं? WP प्लगइन प्रशासन कार्य केवल व्यवस्थापक अनुभाग में परिभाषित किए गए हैं। यदि आपको सामने के छोर पर इसका उपयोग करने की आवश्यकता है, तो आपको फ़ाइल को शामिल करना होगा wp-admin/includes/plugin.php
सुनहरा अंक

नहीं, मैं प्रशासन पैनल पर इसका उपयोग करता हूं।
अरी

यदि आपके पास अपरिभाषित त्रुटि है, तो आप get_plugin_data फ़ंक्शन का उपयोग कर सकते हैं।
पूर्णता के

9

Get_file_data ()get_plugin_data() का एक विकल्प जो अतिरिक्त फ़ाइलों को लोड करने के ओवरहेड के बिना उपलब्ध है।

बस इसे अपनी मुख्य प्लगइन फाइल में जोड़ें:

$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];

हुड के तहत get_file_dataकुछ क्लीवर स्कैनिंग काफी अच्छा प्रदर्शन करता है।

और जरूरत पड़ने पर अपने स्थिर को परिभाषित करें:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

मैं प्रदर्शन के लिए अनुमान लगाता हूं कि मैन्युअल रूप से संस्करण संख्या लिखना बेहतर है? (जैसे यहाँ बताया गया है: wordpress.stackexchange.com/questions/361/… )
14

@baptx हां, हालांकि, यह एक अनुकूलन है जो हर अनुरोध पर Wordpress करता है और इसे ध्यान में रखते हुए नगण्य होगा। दूसरे शब्दों में, इससे कोई फर्क नहीं पड़ता
पॉलक।

1

एक संभव समाधान regex हो सकता है:

$plugin_version = NULL;
if(preg_match('/\*[\s\t]+?version:[\s\t]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];

उल्लेख करना चाहिए कि यह रेगेक्स की तुलना में थोड़ा तेज है, get_file_data()लेकिन सामान्य तौर पर आप इसे नोटिस नहीं करेंगे।

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