上次在 WooCommerce 中使用优惠券时存储

Store when a coupon last time was used in WooCommerce

我需要记录每张优惠券最后一次在 WooCommerce 中使用的日期。

我看到 post_meta table 保存了一条 used_by 记录,其中包含使用它的客户的电子邮件,但没有日期记录。

正在寻找过滤器我认为这个可以帮助我记录日期:

woocommerce_increase_coupon_usage_count

有人可以指导我如何添加该记录吗?

确实可以使用woocommerce_increase_coupon_usage_count动作挂钩。然后只需创建具有所需值的元数据

所以你得到:

function action_woocommerce_increase_coupon_usage_count( $coupon, $new_count, $used_by ) {
    // Parse about any English textual datetime description into a Unix timestamp
    $now = strtotime( 'now' );

    $coupon->update_meta_data( '_coupon_last_time_used', $now );
    $coupon->save();
}
add_action( 'woocommerce_increase_coupon_usage_count', 'action_woocommerce_increase_coupon_usage_count', 10, 3 );

检索数据:

  1. 当您有权访问 $coupon 对象时
// Get meta
$last_time_used = $coupon->get_meta( '_coupon_last_time_used' );
  1. 通过get_post_meta()
$coupon_id = 1001;
$last_time_used = get_post_meta( $coupon_id, '_coupon_last_time_used', true );

这里有另一个解决方案。您可以试试这个解决方案。

add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 2  );
function create_invoice_for_wc_order( $order_id, $order ) {
    foreach( $order->get_coupon_codes() as $coupon_code ){
        $coupon_post_obj = get_page_by_title($coupon_code, OBJECT, 'shop_coupon');
        $coupon_id       = $coupon_post_obj->ID;
        $date = date('Y-m-d H:i:s');
        update_post_meta($coupon_id, '_coupon_last_used', $date );
    }   
}