خانه / آموزش / انجام یک عملیات به صورت متناوب و منظم در وردپرس

انجام یک عملیات به صورت متناوب و منظم در وردپرس

شاید در سایت وردپرسی خود به انجام یک عملیات بصورت متناوب و منظم در وردپرس نیاز داشتید . مثلا ارسال اس ام اس بصورت متناوب به کاربران سایت یا ارسال ایمیل بصورت روزانه برای کاربران سایت.

خوشبختانه وردپرس یک سیستم قوی Cron Job داخلی دارد که به توسعه‌دهندگان این امکان را می‌دهد که در مدت مشخصی دستورات موردنظر را اجرا کنند. برای مثال هر روز، نسخه جدید پلاگین را چک کنند و …

مزایا و معایب سیستم Cron Job داخلی وردپرس نسبت به خویشاوند یونیکسی آن را در زیر آورده‌ام:

مزایا:

  • عدم وابستگی به سیستم‌عامل سرور
  • امکان تغییر زمان و دوره Cron در هر زمان
  • استفاده آسان برای توسعه‌دهندگان مبتدی

معایب انجام یک عملیات در وردپرس :

  • سیستم Cron داخلی وردپرس به بازدید کاربران بستگی دارد. یعنی هر کاربری که سایت را باز کند، وردپرس چک می‌کند که آیا زمان انجام وظیفه محول‌شده فرا رسیده یا خیر. در صورتی که سایت کم بازدید باشد، سیستم داخلی ممکن است به کار نیاید.
  • دقیق نبودن زمان انجام: شما ممکن است Cron را روی روز شنبه ساعت ۲۲:۰۰ تنظیم کنید، اما به دلیلی که بالا گفته شد، ممکن است که وظیفه محول‌شده ساعت ۲۲:۱۵ یا حتی دیرتر روی دهد. البته اگر ساعت ۲۲:۰۱ بازدیدی از سایت انجام شود، وظیفه همان موقع اجرا می‌شود.

 

اگر مشکل بازدید سایت ندارید و یا یک مقدار تاخیر برای شما مشکل ساز نیست آموزش زیر را حتما بخوانید .

در اینجا میخواهیم تابع کاربردی

wp_schedule_event()

را به شما معرفی کنیم. شما با کمک این تابع خواهید توانست عملیات خود را بصورت متناوب و منظم انجام دهید.این تابع سه ورودی دارد که ورودی اول را معمولا time قرار داده میشود . ورودی دوم انتخاب میشود که تابع روزانه هفتگی یا ماهانه اجرا شود و ورودی سوم هوک سفارشی که باید در زمان های مختلف و به مرور زمان اجرا شود . این تابع معمولا در جایی قرار داده میشود که یک بار در زمان فعال شدن افزونه اجرا شود.

 

 

  • تکرار رویدادها به صورت سفارشی

    همان‌طور که پیش‌تر اشاره شد، وردپرس پیش‌فرض از سه نوع برای تکرار رویدادها استفاده می‌کند:

    1. daily : روزانه (هر ۲۴ ساعت)
    2. twicedaily : دو بار در روز (هر ۱۲ ساعت)
    3. hourly : هر ساعت (هر ۶۰ دقیقه)

    شاید شما نیاز به هر ۵ دقیقه یا هر یک ماه داشته باشید. کافیست که فاصله زمانی بین هر تکرار به ثانیه به وردپرس تحویل دهید. برای مثال هر پنج دقیقه به ثانیه برابر با ۵ * ۶۰ می‌شود یا هر ماه برابر ۶۰ * ۶۰ * ۲۴ * ۳۰ می‌شود. برای معرفی از فیلتر cron_schedules به صورت زیر استفاده می‌کنیم.

برای تعریف، ابتدا یک عضو جدید به آرایه با کلید five_minutes اضافه کردیم، سپس برای کلید interval آن، ۵ دقیقه را به ثانیه تعریف کردیم و برای display هم مقدار دلخواهی در نظر می‌گیریم.

حالا در تابع wp_schedule_event می‌توانید از five_minutes به جای daily یا hourly و … استفاده کنید تا رویداد شما هر پنج دقیقه اجرا شود.

نکته مهم: نکته‌ای که بیشتر توسعه‎دهندگان در توسعه پلاگین و پوسته‌هایی که از سیستم Cron داخلی استفاده می‌کنند، رعایت نمی‌کنند، پاک‌نکردن رویدادها در هنگام غیرفعال‌شدن افزونه یا پلاگین است. برای حذف رویداد از سیستم وردپرس، از کد مشابه زیر برای پلاگین‌ها استفاده کنید:

 

register_deactivation_hook( __FILE__, 'wp_parsi_remove_task' ); // be jaye __FILE__, sabet file asli plugin khod ra jaygozin konid
function wp_parsi_remove_task() {
	if ( wp_next_scheduled( 'wp_parsi_daily_task' ) )
		wp_clear_scheduled_hook( 'wp_parsi_daily_task' );
}

 

اگر شما میخواهید کد خاصی را بصورت منظم در وبسایت خود اجرا کنید و به مشکل برخوردید در قسمت نظرات اعلام کنید تا راهنمایی کنیم . اگر افزونه خاصی را برای انجام یک عملیات بصورت منظم در نظر داشتید اعلام کنید که شهر تم آن را برای شما فراهم کند.

با تشکر.

 

همچنین ببینید

در این پست مروری داریم بر واحدهای شمارش بسیار متداول و پرکار…

پست اینستاگرامی آموزش زبان انگلیسی : در این پست مروری داریم بر واحدهای شمارش بسیار …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *