我使用“ 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_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_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'),'%Y-%m-%d %H:%i:%s') WHERE meta_id = @METAIDNEXT;
END IF;
END
如果我使自己从PhpMyAdmin中插入,并且在Wordpress进行购买时被触发,则触发器可以很好地工作,因为当发生错误时,它会使我的查询崩溃。 但是我想我在触发器中执行选择时不知道是否有所有数据。因此,我不知道是否应将触发器放置在此表中。