去年幫朋友開發(fā)了一個簡單的 WordPress CRM 應(yīng)用,朋友一直在使用,效果不錯,到現(xiàn)在已經(jīng)積累了不少客戶了?,F(xiàn)在朋友遇到一個問題:老是忘記定期回訪客戶,并且回訪客戶缺乏規(guī)律,回訪管理不方便,想在這個 CRM 應(yīng)用里面添加一個定期回訪的提醒。
具體需求是這樣的:
- 添加了一個客戶后,每隔 1周、3周、一個半月提醒客服回訪一次客戶
- 一個半月之后,每隔三個月提醒客服回訪一次客戶
在 WordPress CRM 中添加定期回訪提醒的解決思路
需求很簡單,解決方案也很明確,直接用 WordPress 的任務(wù)系統(tǒng)來實現(xiàn)就可以了,添加客戶的時候,添加若干個只執(zhí)行一次的計劃任務(wù),用于發(fā)送需求 1 中的單次提醒,同時添加一個每 3 個月循環(huán)執(zhí)行的計劃任務(wù),每 3 個月發(fā)送一次提醒。下文代碼中用到的 WEEK_IN_SECONDS 和 MONTH_IN_SECONDS 都是 WordPress 用于表示秒數(shù)的常量。
添加計劃任務(wù)
add_action( 'wp_insert_post', function ( $post_id, $post, $update ) {
// 排除不需要提醒的操作
if ( wp_is_post_revision( $post_id ) || wp_is_post_autosave( $post_id ) || $update ) {
return;
}
$weeks = [ 1, 3, 6 ];
// 添加單次計劃任務(wù)
if ( $post->post_type === 'client' ) {
foreach ( $weeks as $week ) {
wp_schedule_single_event( current_time( 'timestamp', 1 ) + WEEK_IN_SECONDS * $week, 'remind_communicate', [ 'post_id' => $post_id ] );
}
}
// 添加循環(huán)計劃任務(wù)
if ( ! wp_next_scheduled( 'remind_communicate' ) && $post->post_type == 'client' ) {
wp_schedule_event( current_time( 'timestamp' ), 'six_monthly', 'remind_communicate', [ 'post_id' => $post_id ] );
}
}, 10, 3 );
添加計劃任務(wù)間隔時間
由于 WordPress 默認的計劃任務(wù)間隔時間沒有每三個月一次的定義,我們需要添加自定義計劃任務(wù)間隔時間,這個時間間隔可以是任意時間。
add_filter( 'cron_schedules', function ( $schedules ) {
// 每 3 月
$schedules[ 'three_monthly' ] = [
'display' => __( '三個月', 'enter' ),
'interval' => MONTH_IN_SECONDS * 3,
];
return $schedules;
} );
計劃任務(wù)發(fā)生時,發(fā)送郵件提醒
這里是計劃任務(wù)發(fā)生時, CRM 系統(tǒng)發(fā)送提醒的實際操作,可以是發(fā)送郵件給客服,也可以是發(fā)送站內(nèi)消息、短信、甚至是推送到微信、Android 客戶端等。其實在客戶的 CRM 系統(tǒng)中,我們添加了一個站內(nèi)信系統(tǒng)、方便客服查看并處理回訪消息。
add_action( 'remind_communicate', function ( $post_id ) {
// 獲取客戶信息和消息接收者
$post = get_post( $post_id );
$owner = get_user_by( 'ID', $post->post_author );
// 消息內(nèi)容
$subject = '請回訪客戶' . carbon_get_post_meta( $post_id, 'name' );
$content = '客戶「' . carbon_get_post_meta( $post_id, 'name' ) . '」于「' . carbon_get_post_meta( $post_id, 'deal_date' ) . '」簽訂了合同。是時候回訪一下了。';
// 發(fā)送郵件給用戶
wp_mail( $owner->user_email, $subject, $content );
} );
刪除客戶時,刪除回訪客戶的提醒
用戶刪除了一個客戶后,提醒回訪的計劃任務(wù)就不再需要了,我們需要在刪除客戶的時候,自動刪除該客戶對應(yīng)的計劃任務(wù),以免 CRM 系統(tǒng)發(fā)送無用的回訪提醒。
add_action( 'delete_post', function ( $post_id ) {
wp_clear_scheduled_hook( 'remind_communicate', [ 'post_id' => $post_id ] );
} );
WordPress 檢查和執(zhí)行計劃任務(wù)在用戶訪問頁面的時候出發(fā)的,當系統(tǒng)沒有用戶訪問的時候,會因為計劃任務(wù)沒被觸發(fā)而導(dǎo)致提醒發(fā)送不及時,我們需要通過操作系統(tǒng)的計劃任務(wù)來觸發(fā) WordPress 計劃任務(wù)。有了這個系統(tǒng),客戶再也不用擔心忘記回訪某個客戶了,每天到 CRM 應(yīng)用后臺檢查一下回訪消息提醒,如果有新的提醒,回訪客戶并添加回訪記錄就可以了。


