wp-cron چیست
تا حالا فکر کردی چه جوری سایت وردپرست همیشه روون کار میکنه؟ مثل وقتی که خودش میره دنبال آپدیت یا یه پست زمانبندیشده رو خودش منتشر میکنه؟ اینجاست که چیزی به اسم “کران وردپرس” (WordPress Cron) وارد میشه.
کران وردپرس (WP-Cron) یه سیستمه که کارش زمانبندی کارهای مختلف توی سایتته. باعث میشه کارهایی مثل چک کردن آپدیتها یا اجرای یه سری وظایف خاص سر وقت، بدون اینکه خودت دستی انجامش بدی، بهصورت خودکار انجام بشن.
تو سیستمهای سنتی، یه چیزی به اسم “کران جاب” هست که کارها رو طبق زمان مشخص انجام میده. ولی وردپرس یه کم متفاوت عمل میکنه؛ میاد بازههای زمانی رو شبیهسازی میکنه تا اون کارها انجام بشن.
یعنی چی؟ یعنی هر بار که یکی سایتتو باز میکنه، وردپرس چک میکنه ببینه کاری زمانبندی شده که باید اجرا بشه یا نه. این کار باعث میشه سایتت همیشه بهروز و مرتب بمونه.
اگه بلد باشی چطور این وظایف زمانبندیشده رو مدیریت کنی، میتونه تأثیر زیادی روی عملکرد سایتت بذاره. وقتی بدونی کجا رو دستکاری کنی و چی رو تغییر بدی، میتونی کنترل کامل این بخش رو به دست بگیری و سایتتو با نیازای خودت هماهنگتر کنی.
چه بخوای پستهات رو تو زمانهای خاص منتشر کنی، چه کارای نگهداری سایتت رو منظم انجام بدی، یاد گرفتن کار با WP-Cron میتونه یه ابزار قدرتمند برای مدیریت بهتر سایتت باشه.
آشنایی با wo-cron
WordPress Cron یه بخش خیلی مهم از وردپرسه که کمک میکنه یهسری کارا توی سایتت بهصورت خودکار و زمانبندیشده انجام بشن. توی این قسمت قراره بفهمیم اصلاً WP-Cron چیه، چه فرقی با کران یونیکس داره و چطور کار میکنه.
wp-cron چیست؟
WordPress Cron که بهش WP-Cron هم میگن، یه قابلیت داخلی توی وردپرسه که کارهای زمانبندیشده رو مدیریت میکنه. کارهایی مثل چک کردن برای آپدیتها، منتشر کردن پستهایی که براشون زمان مشخص کردی و چیزای دیگه.
برخلاف کرانهای سنتی که مستقیماً روی سرور اجرا میشن، WP-Cron به ترافیک سایتت وابستهست. یعنی وقتی یکی میاد توی سایتت، فایل wp-cron.php
اجرا میشه و وردپرس بررسی میکنه ببینه کاری زمانبندیشده که باید انجامش بده یا نه.
حالا اگه سایتت بازدید زیادی نداشته باشه، ممکنه این روش خیلی قابل اعتماد نباشه و بعضی کارا دیر انجام بشن یا اصلاً اجرا نشن.
مقایسه WordPress Cron با Unix Cron
کران یونیکس یه برنامه زمانبند توی سیستمعاملهای شبه یونیکس (مثل لینوکس) هست که کارها رو طبق ساعت سیستم، تو زمانهایی که خودت تعیین میکنی، اجرا میکنه.
از اون طرف، وردپرس کران برای اجرای کارای زمانبندیشده به بازدیدکنندههای سایت وابستهست، چون از ساعت سیستم استفاده نمیکنه.
برخلاف کران یونیکس که خودش سر زمان مشخص کارشو انجام میده، WP-Cron فقط وقتی اجرا میشه که یکی بیاد سایتو باز کنه.
برای همین اگه سایتت بازدید زیادی نداشته باشه، ممکنه بعضی کارا انجام نشن یا عقب بیفتن. اما کران یونیکس کاری به ترافیک سایت نداره و همیشه کارها رو سر وقت انجام میده.
نحوه عملکرد WordPress Cron
وردپرس کران اینطوری کار میکنه که یه سری کارای زمانبندیشده رو تو دیتابیس وردپرس ذخیره میکنه. این کارا میتونن هر چند وقت یه بار اجرا بشن، مثلاً هر ساعت یا دو بار تو روز.
هر بار که کسی وارد سایتت میشه، فایل wp-cron.php
میاد چک میکنه ببینه کارایی هست که باید الان انجام بشن یا نه، و اونا رو اجرا میکنه.
تو میتونی با کمک هوکها و فیلترها زمانبندی و کارای دلخواه خودت رو هم تعریف کنی.
مثلاً میتونی یه کار بذاری که دیتابیس رو بهینهسازی کنه یا ایمیلهای اطلاعرسانی بفرسته.
اگه سایتت بازدید کمی داره یا میخوای کنترل دقیقتری روی زمان اجرای کارا داشته باشی، بهتره یه کران جاب واقعی روی سرورت تنظیم کنی که مرتب فایل wp-cron.php
رو اجرا کنه تا مطمئن باشی همه کارا به موقع انجام میشن.
راهاندازی و مدیریت Cron job ها در وردپرس
راهاندازی و مدیریت کران جابها تو وردپرس این امکان رو بهت میده که کارهایی مثل بکاپ گرفتن، آپدیت کردن و کلی کار دیگه رو خودکار انجام بدی. تو این بخش، یاد میگیری چطور با فانکشنهای WP-Cron کار کنی، از افزونهها استفاده کنی، بازههای زمانی سفارشی بسازی و کران جابها رو ویرایش یا حذف کنی.
استفاده از توابع WP-Cron
WP-Cron همون سیستم کران خود وردپرسه که بهت اجازه میده کارای زمانبندیشده بسازی. میتونی این کارا رو با استفاده از فانکشنهایی مثل wp_schedule_event
مدیریت کنی. این فانکشن بهت این امکان رو میده که مشخص کنی کارها کی باید اجرا بشن.
تابع add_action
کارای سفارشیت رو به WP-Cron وصل میکنه. مثلاً:
بعد باید خود تابع رو هم تعریف کنی:
به این شکل، کارت به برنامه زمانبندی اضافه میشه و طبق همون زمان اجرا میشه.
مدیریت WordPress cron با استفاده از افزونه ها
مدیریت کران جابها با افزونههایی مثل WP Crontrol خیلی راحتتر میشه.
اول از همه باید افزونه WP Crontrol رو از داشبورد وردپرس نصب و فعال کنی.
برو به بخش افزونهها – افزودن افزونه تازه
جستجو کن “WP Crontrol”
بعد روی «همین حالا نصب کن» کلیک کن و بعدش
بعد از اینکه افزونه رو فعال کردی، برو به قسمت ابزارها – رویدادهای کران (Cron Events).
اینجا میتونی لیست تمام کارای زمانبندیشده (کران جابها) رو ببینی.
این افزونهها یه رابط کاربری ساده در اختیارت میذارن که بدون نیاز به کدنویسی، بتونی کرانجابهات رو اضافه کنی، ویرایششون کنی یا مدیریتشون کنی.
ایجاد بازههای زمانی سفارشی
گاهی وقتا بازههای پیشفرضی که وردپرس برای کرانجابها در نظر گرفته (مثل هر ساعت، روزی دو بار یا روزانه)، برات مناسب نیستن. اگه میخوای مثلاً هر ۵ دقیقه یه بار یه کاری انجام بشه، باید یه بازه زمانی سفارشی درست کنی.
برای این کار باید یه تکه کد به فایل functions.php
قالبت اضافه کنی.
از فیلتر cron_schedules
استفاده میکنی تا بازه جدید رو تعریف کنی. مثلاً:
function example_add_cron_interval( $schedules ) {
$schedules['every_five_minutes'] = array(
'interval' => 300, // یعنی ۳۰۰ ثانیه = هر ۵ دقیقه
'display' => __( 'Every 5 Minutes' )
);
return $schedules;
}
add_filter( 'cron_schedules', 'example_add_cron_interval' );
بعدش میتونی با استفاده از wp_schedule_event
کاری رو تعریف کنی که طبق این بازه جدید اجرا بشه.
خیلی عالی بوددددد !!!!!