هوک های فعال سازی / غیرفعال سازی
هوکهای فعالسازی و غیرفعالسازی راههایی برای انجام عملیات در هنگام فعال یا غیرفعال شدن پلاگینها ارائه میدهند.
- هنگام فعالسازی، پلاگینها میتوانند تابعی را برای اضافه کردن rewrite rule ها، افزودن جداول پایگاه داده سفارشی یا تنظیم مقادیر گزینه های پیشفرض اجرا کنند.
- درغیرفعال کردن، پلاگینها میتوانند تابعی را برای حذف دادههای موقتی مانند فایلهای حافظه پنهان و موقت و دایرکتوریها اجرا کنند.
هوک غیرفعال کردن گاهی اوقات با هوک حذف اشتباه گرفته می شود . هوک حذف برای حذف دائمی همه داده ها مانند حذف گزینههای افزونه و جداول سفارشی و غیره مناسب است.
فعال سازی
برای تنظیم یک هوک فعال سازی، از تابع register_activation_hook() استفاده کنید:
register_activation_hook(__FILE__, 'pluginprefix_function_to_run');
غیرفعال کردن
برای تنظیم یک هوک غیرفعال کردن، از تابع register_deactivation_hook() استفاده کنید:
register_deactivation_hook(__FILE__, 'pluginprefix_function_to_run');
اولین پارامتر در هریک از این توابع به فایل اصلی پلاگین اشاره دارد، که فایلی است که در آن توضیح هدر پلاگین را قرار داده اید . معمولاً این دو تابع از داخل فایل اصلی پلاگین فعال می شوند. با این حال، اگر توابع در هر فایل دیگری قرار می گیرند، باید پارامتر اول را اصلاح کنید تا به درستی به فایل پلاگین اصلی اشاره کند.
مثال
یکی از رایجترین استفاده هوک فعالسازی، بروزرسانی پیوندهای دائمی وردپرس است، زمانی که یک پلاگین یک پست تایپ سفارشی را ثبت میکند. با این کار از شر خطاهای 404 خلاص می شوید. بیایید به مثالی از نحوه انجام این کار نگاه کنیم:
/**
* Register the "book" custom post type
*/
function pluginprefix_setup_post_type() {
register_post_type( 'book', ['public' => true ] );
}
add_action( 'init', 'pluginprefix_setup_post_type' );
/**
* Activate the plugin.
*/
function pluginprefix_activate() {
// Trigger our function that registers the custom post type plugin.
pluginprefix_setup_post_type();
// Clear the permalinks after the post type has been registered.
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'pluginprefix_activate' );
اگر با ثبت پست تایپ سفارشی آشنایی ندارید، نگران نباشید – بعداً به این موضوع پرداخته خواهد شد. این مثال صرفاً به این دلیل استفاده می شود که بسیار رایج است. با استفاده از مثال بالا، نحوه معکوس کردن این فرآیند و غیرفعال کردن یک افزونه در زیر آمده است:
/**
* Deactivation hook.
*/
function pluginprefix_deactivate() {
// Unregister the post type, so the rules are no longer in memory.
unregister_post_type( 'book' );
// Clear the permalinks to remove our post type's rules from the database.
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'pluginprefix_deactivate' );
برای اطلاعات بیشتر در مورد هوک های فعال سازی و غیرفعال کردن، به منابع زیر مراجعه کنید:
- register_activation_hook() در بخش تابع وردپرس.
- register_deactivation_hook() در بخش تابع وردپرس.