wp_schedule无法正常工作,我想每天发送电子邮件以注册用户,生日那天

问题描述

我正在开发一个插件,每天在用户生日那天向用户发送电子邮件,但是wp_schedule无效。我想在他生日时发送附有优惠券的电子邮件

add_action(int)挂钩正常工作,它创建了优惠券并发送了邮件,但按计划它不起作用。如何比较用户的出生日期和当前日期并发送优惠券?

public function user_checked_date_create_coupan() {
    global $woocommerce;
    // how many time send main 
    $coupon_send_times = 1;
    //today date 
    $today = date("Y-m-d");
    // get name of store user 
    $store_name = get_bloginfo('name');
    // store url 
    $store_url = get_bloginfo('url');
    // send mail before days
    $mail_before_days = get_option('coupan_before_days');
    // condition main before 
    if( $mail_before_days == 0 || empty($mail_before_days) )
      $mail_before_days = 0;
      /// get field date 
    $args = array(
      'Meta_key' => 'dobc_date_field',);
    
    $birthday_users = get_users($args);

    if( is_array($birthday_users) && !empty($birthday_users) ) {
      foreach( $birthday_users as $birthday_user ) {
        $get_user_birthday = get_user_Meta($birthday_user->data->ID,'dobc_date_field',true );
        if( !empty($get_user_birthday) ) {
          $today = date("Y-m-d");
          $new_birthday_year = date('Y').'-'.$get_user_birthday;
          $date = date('Y-m-d',strtotime($new_birthday_year . " -".$mail_before_days." days"));
            // print_r($date);
            // exit();
          if( $today ==$get_user_birthday) {
          

            $user_info = get_userdata($birthday_user->data->ID);
            //check user is eligible for send birthday this time
            
            $check_coupon_year = get_user_Meta($birthday_user->data->ID,'coupon_year',true );
            if( empty($check_coupon_year) || $check_coupon_year == '' ) {
              $check_coupon_year = 0;
            }
            $check_coupon_year = intval($check_coupon_year);
            if( $coupon_send_times == 0 || $check_coupon_year <= $coupon_send_times ) {
              $user_email = $birthday_user->data->user_email;
              $username = $birthday_user->data->user_login;
              if( !empty($user_email) ) {
                //create coupon based on settings
                $code_length = get_option( 'dobc_code_length' );
                if( $code_length == '' )
                 $code_length = 12;
                 $prefix = get_option( 'dobc_prefix' );
                 $code = $prefix . strtoupper( substr( str_shuffle( md5( time() ) ),$code_length ) );
                 $type = get_option( 'dobc_dis_type' );
                 $amount = get_option( 'dobc_amount' );
                 $product_ids = get_option( 'select_product' );
                 $allowed_products = '';
                if ( is_array( $product_ids ) ) {
                  foreach ( $product_ids as $product_id ) {
                    $product = wc_get_product( $product_id );
                    $allowed_products .= '<a href="'.$product->get_permalink().'">'.$product->get_title().'</a>,';
                  }
                  $allowed_products = rtrim( $allowed_products,',' );
                  $product_ids = implode( ',$product_ids );
                }
                $product_categories = get_option( 'dobc_categories' );
                $allowed_cats = '';
                if ( is_array( $product_categories ) ) {
                  foreach ( $product_categories as $cat_id ) {
                    $cat = get_term_by( 'id',$cat_id,'product_cat' );
                    $allowed_cats .='</br>'. '<a  href="'.get_term_link( $cat->slug,'product_cat' ).'">'.$cat->name.'</a>,'.'</br>';
                  }
                  $allowed_cats = rtrim( $allowed_cats,' );
                    ////
                  ///
                }
                else
                $product_categories = array();
                $days = get_option( 'dobc_days' );
                $date = '';
                $expire = '';
                $format = get_option( 'dobc_date_format' ) == '' ? 'jS F Y' : get_option( 'dobc_date_format' );
                    
                if ( $days ) {
                  $date = date( 'Y-m-d',strtotime( '+'.$days.' days' ) );
                  $expire = date_i18n( $format,strtotime( '+'.$days.' days' ) );
                }
                $free_shipping = get_option( 'dobc_shipping' );
                $exclude_sale_items = get_option( 'dobc_sale' );
                $minimum_amount = get_option( 'dobc_min_purchas' );
                $maximum_amount = get_option( 'dobc_max_purchase' );
                $customer_email = '';
                if ( get_option( 'dobc_restrict' ) == 'yes' )
                  $customer_email = $user_email;
                //Add a new coupon when user registers
                $coupon = array(
                  'post_title' => $code,'post_content' => '','post_status' => 'publish','post_author' => 1,'post_type'     => 'shop_coupon'
                );
                $coupon_id = wp_insert_post( $coupon );
                //Add coupon Meta data
                update_post_Meta( $coupon_id,'discount_type',$type );
                update_post_Meta( $coupon_id,'coupon_amount',$amount );
                update_post_Meta( $coupon_id,'individual_use','yes' );
                update_post_Meta( $coupon_id,'product_ids',$product_ids );
                update_post_Meta( $coupon_id,'usage_limit','1' );
                update_post_Meta( $coupon_id,'usage_limit_per_user','limit_usage_to_x_items','' );
                update_post_Meta( $coupon_id,'expiry_date',$date );
                update_post_Meta( $coupon_id,'apply_before_tax','no' );
                update_post_Meta( $coupon_id,'free_shipping',$free_shipping );
                update_post_Meta( $coupon_id,'exclude_sale_items',$exclude_sale_items );
                update_post_Meta( $coupon_id,'product_categories',$product_categories );
                update_post_Meta( $coupon_id,'minimum_amount',$minimum_amount );
                update_post_Meta( $coupon_id,'maximum_amount',$maximum_amount );
                update_post_Meta( $coupon_id,'customer_email',$customer_email );

                $search = array( '{COUPONCODE}','{COUPONEXPIRY}','{ALLOWEDCATEGORIES}','{ALLOWEDPRODUCTS}','{STORENAME}','{STOREURL}');
                $replace = array( $code,$expire,$allowed_cats,$allowed_products,$username,$store_name,$store_url );
                $subject = str_replace( $search,$replace,get_option( 'dobc_email_sub' ) );

                $body = str_replace( $search,get_option( 'email_body_id' ) );
                // $body = "<html><body><h1 class ='test'>( $body ); </h1></body></html>";
                $body = "<html><body><div style ='padding:10px 80px;'>( $body ); </div</body></html>";
                $user_id = get_current_user_id(); 
                $user_info = get_userdata($user_id);
                $to = $user_info->user_email;

                //////
                $message= $this->dobc_email_template( esc_html__( '','bobc' ) . get_option( 'dobc_email_sub'),$body );
                    // wp_mail( $user_email,esc_html( __(get_option( 'dobc_email_sub'),'bobc' ) ),$body,$headers );
               // print_r($body);
                $headers = array('Content-Type: text/html; charset=UTF-8');
                         //////////////////
                 wp_mail( $to,$subject,$message,$headers );
                //mil send valid or mnoy 
                 //$sent = wp_mail($to,strip_tags($body),$headers);
                $new_coupon_year = $check_coupon_year + 1;
                update_user_Meta($birthday_user->data->ID,$new_coupon_year );
              }
            }
          }
        }
      }
    }
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)