微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Woocommerce订阅:添加触发器以自动更改下一个付款日期

如何解决Woocommerce订阅:添加触发器以自动更改下一个付款日期

我使用“ WooCommerce-Lite的产品交付日期”让客户决定何时收取其订购的第二笔款项。 此插件添加一个带有Meta_key =“ _prdd_lite_date”和value =日期本身的“ wp_woocommerce_order_itemMeta”。

我在数据库添加一个触发器:

CREATE TRIGGER mytrigger
AFTER INSERT
ON wp_wc_order_product_lookup
FOR EACH ROW 
BEGIN
  SET @MetaIDNEXT := '';
  SET @MetaIDEND := '';
  SET @NEWDATE := '';
  SELECT pm1.Meta_id INTO @MetaIDNEXT FROM wp_postMeta pm1,wp_posts p1,wp_wc_order_product_lookup opl WHERE opl.order_item_id = NEW.order_item_id AND p1.post_parent = opl.order_id AND p1.ID = pm1.post_id AND pm1.Meta_key = "_schedule_next_payment";
  SELECT pm1.Meta_id INTO @MetaIDEND FROM wp_postMeta pm1,wp_wc_order_product_lookup opl WHERE opl.order_item_id = NEW.order_item_id AND p1.post_parent = opl.order_id AND p1.ID = pm1.post_id AND pm1.Meta_key = "_schedule_end";
  SELECT oim.Meta_value INTO @NEWDATE FROM wp_woocommerce_order_itemMeta oim WHERE oim.Meta_key = "_prdd_lite_date" AND oim.order_item_id = NEW.order_item_id;
  
  IF (@MetaIDNEXT != '' AND @MetaIDEND != '' AND @NEWDATE != '')
  THEN
    update wp_postMeta SET Meta_value = DATE_FORMAT(DATE_ADD(STR_TO_DATE(@NEWDATE,'%Y-%m-%d'),INTERVAL 2 MONTH),'%Y-%m-%d %H:%i:%s') WHERE Meta_id = @MetaIDEND; 
    update wp_postMeta SET Meta_value = DATE_FORMAT(STR_TO_DATE(@NEWDATE,'%Y-%m-%d %H:%i:%s') WHERE Meta_id = @MetaIDNEXT; 
  END IF;
END 

如果我使自己从PHPMyAdmin中插入,并且在wordpress进行购买时被触发,则触发器可以很好地工作,因为当发生错误时,它会使我的查询崩溃。 但是我想我在触发器中执行选择时不知道是否有所有数据。因此,我不知道是否应将触发器放置在此表中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。