MySQL触发器在Wordpress(WooCommerce)中不起作用?

MySQL trigger not working in Wordpress(WooCommerce)?

提问人:p.zelazny 提问时间:11/9/2023 更新时间:11/9/2023 访问量:22

问:

我编写了一个触发器,当有人更改 Wordpress 面板中的特定内容时,它应该创建一个日志,Woocommerce 插件。 如果我通过替换表中的数据手动进行更改,触发器将起作用。 如果我通过 Wordpress 面板进行更改,触发器不起作用。尽管它在表格中引起了相同的变化。

CREATE TRIGGER `shipp_log` BEFORE UPDATE ON `wp_term_relationships` 
FOR EACH ROW 
IF NEW.term_taxonomy_id!=OLD.term_taxonomy_id AND 'product_shipping_class' = (SELECT taxonomy FROM wp_term_taxonomy WHERE term_taxonomy_id = OLD.term_taxonomy_id) THEN 

INSERT INTO z_shipp_logs(product, shipOld, shipNew, lastactive, sessionText) VALUES (OLD.object_id, OLD.term_taxonomy_id, NEW.term_taxonomy_id, (SELECT FROM_UNIXTIME(meta_value) FROM wp_usermeta where meta_key ='wc_last_active'), (SELECT meta_value FROM wp_usermeta where meta_key ='session_tokens')); 

END IF

WordPress 机制中是否有绕过 SQL 触发器的内容?还有其他机制吗?如何让触发器工作?

其他信息。 我在phpMyAdmin面板中编写了触发器。 当我在控制台上运行mysql程序并使用show triggers时,它是这样注册的。 触发器连接到数据库,而不是表。至少在phpMyAdmin中。

MySQL WordPress WooCommerce 触发器

评论

0赞 Akina 11/9/2023
WordPress 机制中是否有绕过 SQL 触发器的内容?MySQL中根本没有这样的机制。触发器连接到数据库,而不是表。不可能的。触发器文本明确指出它已“连接”到表并对其执行操作。wp_term_relationshipsBEFORE UPDATE
0赞 user1191247 11/9/2023
我建议您启用常规查询日志,并在您“通过 Wordpress 面板进行更改”时准确捕获 WP/WC 正在运行的查询。
1赞 O. Jones 11/9/2023
故障排除建议:使用 John Blackbourn 的 Query Monitor 插件来说服自己 WordPress 实际上对该表进行了更新。应用代码(如 WordPress)无法抑制触发器执行。

答: 暂无答案