کنترل فعالیت های خودکار وردپرس با عنوان Cron ها با WP Crontrol
یکی از قابلیتهای مخفی و البته بسیار پر کاربرد وردپرس، اجرای خودکار کارهایی است که به آن سپرده شده است. این قابلیت با عنوان WP-Cron شناخته میشود و درون مستندات وردپرس راجع به آن خیلی گفته شده است. برخی از قابلیتهای درون خود هستهٔ وردپرس هستند که از کران استفاده میکنند. مثل انتشار خودکار نوشتهها سر یک زمان خاص. یا با استفاده از افزونهها یا قالب وردپرس به کران وردپرس افزوده میشوند. مثل پاکسازی زمانبندی شدهٔ نوشتههای سایت یا دیدگاهها از مطالب هرز. در کل هر کاری که قرار است به صورت خودکار طی یک زمان بندی منظم انجام شود را میتوان به کران وردپرس یا WP Cron سپرد. حالا قصد دارید یک افزونه را خدمت شما معرفی و آموزش دهیم که کار با کران جاب وردپرس را برای ما راحت میکند.
به طور طبیعی مشاهدهٔ کرانهای وردپرس از داخل پیشخوان امکان پذیر نیست. مگر اینکه به برنامه نویسی مسلط باشید و بتوانید اسکریپت یا افزونهای بنویسید که این کار را برای شما انجام دهد. اما لازم به انجام چنین کاری هم نیست. چون افزونههای زیادی هستند که این کار را انجام میدهند. یعنی تمامی کارهای زمان بندی شده را به صورت یک جدول به ما نشان میدهند. یکی از این افزونهها WP Crontrol نام دارد. کاربرد این افزونه بسیار ساده است و با آموزشی که در این مطلب خدمت شما خواهم داد، خیلی راحت حتی میتوانید فعالیتهای زمان بندی شدهٔ خودتان را هم به وردپرس اضافه کنید.
با فرض اینکه با نصب و فعال کردن افزونههای وردپرس آشنا هستید، پس WP Crontrol را از مخزن وردپرس دانلود کرده و روی وردپرس خود نصب کنید. این کار را از صفحهٔ افزونهها » افزودن در پیشخوان وردپرس میتوان انجام داد.
با نصب WP Crontrol دو تا صفحه به پیشخوان شما افزوده میشود:
- ابزارها » Cron Events
- تنظیمات » Cron Schedules
اول برویم به سراغ صفحهٔ Cron Events و ببینیم که در اینجا چه چیزی در اختیار داریم.
مشاهده و مدیریت رویدادهای زمان بندی شده وردپرس
در این صفحه لیست تمامی کران ها یا فعالیتهای خودکار را خواهید دید که البته به دلیل پویا بودن این فعالیتها، مدام نیاز است تا صفحه را Refresh نمایید و این اطلاعیه را در بالای صفحه، که در تصویر بالا هم مشخص است، خواهید دید. در جدول موجود در این صفحه، هر فعالیت درون یک ردیف جای گرفته است. قلاب کران را در ستون اول یعنی Hook خواهید دید و در ستون Next Run زمان تقریبی اجرای بعدی را خواهید دید و در ستون Action هم عملیاتی که قرار است انجام شود را میبینید. در ستون Recurrence فاصلهٔ زمانی بین هر وقوع و اجرای کار را خواهید دید. مثلاً هر دقیقه یا هر ساعت یک بار میتواند مقادیر موجود در این ستون باشد.
در بالای صفحه وقایع را به صورت دسته بندی شده هم میتوانید داشته باشید. اگر روی All events کلیک کرده باشید و این مورد فعال باشد، تمامی رویدادها را خواهید داشت. اگر Events with no action را انتخاب کنید، رویدادهای بدون عملی خاص را خواهید دید؛ یعنی ستون action آنها خالی است. اگر WordPress core events را انتخاب کنید، فقط وقایع مربوط به هستهٔ وردپرس را میتوانید ببینید؛ و نه وقایع مربوط به افزونهها یا قالب وردپرس. اگر هم روی Custom events کلیک کنید، در صورتی که خود شما یا افزونه یا قالبی رویدادی را اضافه کرده باشد، آن را میتوانید درون جدول زیرین ببینید.
از طریق همین صفحه امکان انجام کارهایی روی هر رویداد زمان بندی شده هم وجود دارد. مثلاً همانطور که در تصویر بالا مشخص است، با بردن اشاره گر روی هر رویداد، دستوراتی مثل Edit برای ویرایش، Run Now برای اجرای همین الان رویداد، Pause برای مکث کردن رویداد و Delete برای حذف کردن آن رویداد زمان بندی شده را خواهید دید. علاوه بر آن مثل هر کار دیگری در وردپرس، به صورت عملیات دسته جمعی هم همین کارها را میتوانید روی چند تا رویداد انجام دهید. فقط ابتدا باید چند تا رویداد را با هم انتخاب کنید.
مدیریت و افزودن دورههای زمانی رویدادهای وردپرس
اما حالا برویم به سراغ صفحهٔ Cron Schedules که کارش افزودن و مدیریت دورههای زمانی است. همانطور که گفته شد، هر رویداد در وردپرس باید یک دورهٔ زمانی برای اجرا شدن هم داشته باشد؛ مثلا هر دقیقه یک بار، هر ساعت یک بار، یا هر روز یک بار و الی آخر. از قبل خود هستهٔ وردپرس چند تا دورهٔ زمانی دارد که در صفحهٔ Cron Schedules شاهدش خواهید بود.
هر آنچه که شما در این جدول میبینید، مربوط به دوره های زمانی خود هستهٔ وردپرس است. اما برای افزودن یک دورهٔ زمانی جدید، باید از سمت راست صفحه، ابتدا یک نام فنی (داخلی) را درون Internal Name وارد کنید. سپس فاصله زمانی به واحد ثانیه را درون جعبهٔ Interval وارد کنید. سپس یک نام عمومی هم درون جعبهٔ Display Name وارد نمایید. در آخر روی Add Cron Schedule کلیک کنید.
این کار را برای زمانی انجام میدهیم که در آینده قصد افزودن یک رویداد داریم. رویدادی که میخواهید در فاصلهٔ زمانی خاصی اجرا شود که از قبل نیست.
افزودن رویداد جدید
حالا برای افزودن رویداد در همان صفحهٔ Cron Events، از بالا روی Add New کلیک نمایید. صفحهای را پیش رو خواهید داشت که باید اجرای رویداد را مشخص کنید و در آخر روی Add Event کلیک کنید.
از قسمت Event Type نوع رویداد را مشخص کنید که اگر از نوع استاندارد وردپرس است گزینه اول، در غیر این صورت اگر از نوع کران PHP است گزینه دوم را انتخاب کنید.
از قسمت Hook Name نام قلابی که باید به این رویداد متصل شود را وارد کنید. از نظر برنامه نویسی هستهٔ وردپرس و حتی افزونههای آن میتوانند قلابهای مختلفی داشته باشند که هر کدام کار خاصی را انجام میدهند. شما باید با آن قلابها آشنا باشید. حتی از طریق روشی مثل دستکاری فایل functions.php قالب وردپرس، میتوانید قلاب اختصاصی خودتان را تعریف کنید که در اصل همان کاری است که توسط این رویداد باید اجرا شود.
از قسمت Aurguments نشانوندهایی که البته اختیاری است را قادرید تعیین نمایید.
Next Run اجرای بعدی کران را مشخص میکند. اگر فقط now را انتخاب کنید، همین الان فقط برای یک بار رویداد اجرا میشود و تمام! اما اگر گزینهٔ دوم را انتخاب کنید فقط یک بار آن هم فردا اجرا میشود. اما اگر گزینهٔ At را انتخاب کنید، تاریخ و زمان دقیق اجرای رویداد را میتوان مشخص نمود.
از قسمت Recurrence هم دورههای زمانی که از قبل روی سیستم موجود هستند را میتوانید انتخاب کنید. مثل هر دقیقه یا هر ساعت یا حتی دوره زمانی خودتان از قبل ایجاد کردید.
حال اگر روی Add Event که کلیکد کنید، رویداد مورد نظر ایجاد شده و به Job ها یا همان رویدادهای وردپرس افزوده میگردد و در همان زمانی که مشخص کردید اجرا میشود. به هر تعداد که خواسته باشید و نیاز داشته باشید میتواند Jobs اضافه نمایید.
جمع بندی
با این توضیحات الان میدانید که اگر خواسته باشید به کرانها یا عملیات زمان بندی وردپرس سرک بکشید، افزونه WP Crontrol یک افزونهٔ به شدت کاربردی و مفید است. حتی برای برنامه نویسان و وردپرس کاران حرفهای که قصد افزودن یک کار برنامه ریزی شده را دارند هم مورد نیاز است. البته به شرطی که کمی هم با برنامه نویسی وردپرس آشنا باشند، تا در زمان ایجاد یک رویداد به مشکل بر نخورند.
خیلی از مواقع هم برای رفع ایراد وردپرس باید دید که در پس زمینهٔ وردپرس چه رویدادهایی در حال اجرا هستند یا در آینده اجرا خواهند شد. در این صورت خیلی راحتتر میتوانیم به علت مشکل پی ببریم و آن را رفع کنیم. مثلاً اگر خودکار نوشتههای سایت شما حذف میشوند، ممکن است بررسی کرانهای وردپرس ایدهٔ خوبی باشد. شاید یک افزونه یا حتی یک بدافزار روی وردپرس شما، این کار را در پس زمینه و به صورت خودکار انجام میدهد! حتی اگر فکر میکنید که نیاز دارید روی رویدادهای خودکار وردپرس بررسی بیشتری انجام دهید، امکان خروجی گرفتن از افزونه به صورت فایل CSV هم وجود دارد.
اگر علاقه مند هستید که راجع به Cron Jobs وردپرس یا رویدادهای وردپرس بیشتر بدانید، نکات زیادی در این رابطه وجود دارد که میطلبد سری به آموزشهای دیگر سایت ما بزنید.