मैं अपने लिए एक संयोजन का उपयोग करता हूं:
- एक बार की स्क्रिप्ट के लिए समर्पित एक फ़ाइल
- गलती से स्क्रिप्ट को एक से अधिक बार चलाने से रोकने के लिए एक क्षणिक का उपयोग करना
- स्क्रिप्ट सुनिश्चित करने के लिए क्षमता-प्रबंधन या उपयोगकर्ता-नियंत्रण का उपयोग सिर्फ मेरे द्वारा चलाया जाता है।
संरचना
मैं onetime.php
अपने शामिल-फ़ोल्डर में एक फ़ाइल ( ) का उपयोग करता हूं inc
, जो उपयोग में शामिल है functions.php
, और उपयोग के बाद वहां से हटा दिया गया है।
include( 'inc/onetime.php' );
स्क्रिप्ट के लिए फ़ाइल
मेरे में onetime.php
मेरा समारोह f711_my_onetime_function()
रखा गया है। जैसा कि यह कोई भी कार्य हो सकता है। मुझे लगता है कि आपकी स्क्रिप्ट का परीक्षण किया गया है और सही ढंग से काम करता है।
स्क्रिप्ट के निष्पादन पर नियंत्रण प्राप्त करने के लिए, मैं दोनों का उपयोग करता हूं
क्षमता नियंत्रण
अन्य उपयोगकर्ताओं को गलती से मेरी स्क्रिप्ट निष्पादित करने से रोकने के लिए:
if ( current_user_can( 'manage_options' ) ) // check for administrator rights
या
if ( get_current_user_id() == 711 ) // check if it is me - I prefer restricting the execution to me, not to all admins.
एक क्षणिक
गलती से स्क्रिप्ट को एक से अधिक बार निष्पादित करने से रोकना।
$transient = 'f711_my_onetime_check';
if ( !get_transient( $transient ) ) // check if the function was not executed.
मेरे कार्य में स्क्रिप्ट निष्पादित करने की फ़ाइल इस f711_my_onetime_function()
तरह दिखाई देगी:
$transient = 'f711_my_onetime_check';
if ( get_current_user_id() == 711 && !get_transient( $transient ) ) {
set_transient( $transient, 'locked', 600 ); // lock function for 10 Minutes
add_action( 'wp_footer', 'f711_my_onetime_function' ); // execute my function on the desired hook.
}
function f711_my_onetime_function() {
// all my glorious one-time-magic.
}
कारण यह है कि मैं जाँच के तुरंत बाद क्षणिक को सेट करता हूँ यदि यह मौजूद है कि मैं चाहता हूं कि स्क्रिप्ट के दो बार इस्तेमाल होने वाले मधुमक्खी से लॉक होने के बाद फ़ंक्शन को निष्पादित किया जाए।
यदि मुझे अपने फ़ंक्शन से किसी भी आउटपुट की आवश्यकता है, तो मैं या तो इसे पाद लेख में एक टिप्पणी के रूप में प्रिंट करता हूं, या कभी-कभी मैं सामग्री को फ़िल्टर भी करता हूं।
तालाबंदी 10 मिनट के लिए सेट है, लेकिन आपकी आवश्यकताओं के लिए समायोजित किया जा सकता है।
साफ - सफाई
मेरी स्क्रिप्ट के सफल निष्पादन के बाद मेरे द्वारा हटाए जाने include
से functions.php
, और हटाने onetime.php
सर्वर से। जैसा कि मैंने क्षणिक के लिए एक टाइमआउट का उपयोग किया है, मुझे डेटाबेस को साफ करने की आवश्यकता नहीं है, लेकिन निश्चित रूप से आप फ़ाइल को हटाने के बाद आप क्षणिक को भी हटा सकते हैं।