使用计划任务在 WordPress CRM 中添加定期回访提醒

去年帮朋友开发了一个简单的 WordPress CRM 应用,朋友一直在使用,效果不错,到现在已经积累了不少客…

去年帮朋友开发了一个简单的 WordPress CRM 应用,朋友一直在使用,效果不错,到现在已经积累了不少客户了。现在朋友遇到一个问题:老是忘记定期回访客户,并且回访客户缺乏规律,回访管理不方便,想在这个 CRM 应用里面添加一个定期回访的提醒。

具体需求是这样的:

  1. 添加了一个客户后,每隔 1周、3周、一个半月提醒客服回访一次客户
  2. 一个半月之后,每隔三个月提醒客服回访一次客户

在 WordPress CRM 中添加定期回访提醒的解决思路

需求很简单,解决方案也很明确,直接用 WordPress 的任务系统来实现就可以了,添加客户的时候,添加若干个只执行一次的计划任务,用于发送需求 1 中的单次提醒,同时添加一个每 3 个月循环执行的计划任务,每 3 个月发送一次提醒。下文代码中用到的 WEEK_IN_SECONDS 和 MONTH_IN_SECONDS 都是 WordPress 用于表示秒数的常量。

 添加计划任务

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 ];
   
   // 添加单次计划任务
   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 ] );
      }
   }

   // 添加循环计划任务
   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 );

添加计划任务间隔时间

由于 WordPress 默认的计划任务间隔时间没有每三个月一次的定义,我们需要添加自定义计划任务间隔时间,这个时间间隔可以是任意时间。

add_filter( 'cron_schedules', function ( $schedules ) {

   // 每 3 月
   $schedules[ 'three_monthly' ] = [
      'display'  => __( '三个月', 'enter' ),
      'interval' => MONTH_IN_SECONDS * 3,
   ];

   return $schedules;
} );

计划任务发生时,发送邮件提醒

这里是计划任务发生时, CRM 系统发送提醒的实际操作,可以是发送邮件给客服,也可以是发送站内消息、短信、甚至是推送到微信、Android 客户端等。其实在客户的 CRM 系统中,我们添加了一个站内信系统、方便客服查看并处理回访消息。

add_action( 'remind_communicate', function ( $post_id ) {

   // 获取客户信息和消息接收者
   $post  = get_post( $post_id );
   $owner = get_user_by( 'ID', $post->post_author );

   // 消息内容
   $subject = '请回访客户' . carbon_get_post_meta( $post_id, 'name' );
   $content = '客户「' . carbon_get_post_meta( $post_id, 'name' ) . '」于「' . carbon_get_post_meta( $post_id, 'deal_date' ) . '」签订了合同。是时候回访一下了。';

   // 发送邮件给用户
   wp_mail( $owner->user_email, $subject, $content );
} );

删除客户时,删除回访客户的提醒

用户删除了一个客户后,提醒回访的计划任务就不再需要了,我们需要在删除客户的时候,自动删除该客户对应的计划任务,以免 CRM 系统发送无用的回访提醒。

add_action( 'delete_post', function ( $post_id ) {
   wp_clear_scheduled_hook( 'remind_communicate', [ 'post_id' => $post_id ] );
} );

WordPress 检查和执行计划任务在用户访问页面的时候出发的,当系统没有用户访问的时候,会因为计划任务没被触发而导致提醒发送不及时,我们需要通过操作系统的计划任务来触发 WordPress 计划任务。有了这个系统,客户再也不用担心忘记回访某个客户了,每天到 CRM 应用后台检查一下回访消息提醒,如果有新的提醒,回访客户并添加回访记录就可以了。

类别:WordPress 教程精选

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册