سلام گقت بخیر
دوستان من سامانه پیامکی دارم و دارم افزونه ای مینویسم که نیا ز هست هر چند دقیقه یکبار با api اطلاعات را از سامانه پیامکی بخونه و پیامک هایی در پاسخ ارسال. کنه
چطور میتونم این کار انجام بدم
ممنون میشم راهنمایی بفرمایید
سلام.
توضیحات این موضوع خیلی زیاد است.
در نتیجه لطفا لینک زیر را مطالعه بفرمایید:
https://wpshout.com/wp_schedule_event-examples
اگر جایی را متوجه نشدید یا خطا داشتید بفرمایید تا بررسی شود.
@hadikhanian
من این کد را زدم و با افزونه wp crontrol چک کردم به کرون جاب ها اضافه نشده
add_action( 'init', 'mj_register_users_count_event' );
/**
* this method will register the cron event
*/
function mj_register_users_count_event() {
// make sure this event is not scheduled
if( !wp_next_scheduled( 'mj_users_count_hook' ) ) {
// schedule an event
wp_schedule_event( time(), 'half', 'mj_users_count_hook' );
}
}
/**
* mj_register_users_count method will be call when the cron is executed
*/
add_action( 'mj_users_count_hook', 'mj_users_count' );
/**
* this method will call when cron executes
*/
function mj_users_count() {
wp_mail( get_user_by( 1 )->user_email, 'Tutorial: Cron job from mjkhajeh.ir', count_users()['total_users'] );
}
@majeeddehghan
مطمئن شوید که مقدار half در وردپرس شما تعریف شده است.
در غیر این صورت مقدار های پیش فرض ‘hourly’, ‘daily’, ‘twicedaily’ می باشند.
در ضمن می تونید از طریق یک فیلتر روی هوک cron_schedules مقدار مورد نظرتون رو به recurrence اضافه کنید.
کد زیر را جایگزین کد تون بکنید:
add_action( 'wp_loaded', 'mj_register_users_count_event' );
function mj_register_users_count_event() {
if( !wp_next_scheduled( 'mj_users_count_hook' ) ) {
// schedule an event
if (!wp_next_scheduled('mj_users_count_hook')) {
wp_schedule_event(time() + 60, 'hourly', 'mj_users_count_hook');
} else {
$next = wp_next_scheduled('mj_users_count_hook');
$now = strtotime("-60 min");
if ($next < $now) {
wp_unschedule_event($next, 'mj_users_count_hook');
wp_schedule_event(time() + 60, 'hourly', 'mj_users_count_hook');
}
}
}
}
کد بالا ی جوری میاد کار رو اصلاح میکنه که اگر هوک تون از صف خارج شده بوده دوباره اون رو بیاد چک بکنه و برش گردونه به صف اجرایی. واسه همین ی مقدار منفی 60 دقیقه داره چون زمان رو اجرا رو اینجا روی یک ساعت تنظیم کردیم.
زمان اجرایی بعدی رو جهت اطمینان به علاوه 60 ثانیه کردیم تا اگر مشکلی داشت برای بار اول فرصت داشته باشه که اجراش کنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟