问题描述
我正在开发一个插件,每天在用户生日那天向用户发送电子邮件,但是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 (将#修改为@)