【发布时间】:2014-01-07 05:42:58
【问题描述】:
现有 WooCommerce 插件(产品附加组件扩展)的自定义应用程序存在两个方面的问题。
我的 WooCommerce/WordPress 运行良好,并且正在使用产品附加组件扩展来捕获客户孩子的注册信息,作为订单流程的一部分。
客户填写关于其孩子的 56 个潜在输入(并非全部是强制性的,因此有些可以保持 null)。我的这部分流程运行良好。
我还有一个(青年球员的)注册数据库,它是定制的联赛管理系统的一部分。该数据库表每行有 57 列。
我遇到的第一个问题是将第一个表中的所有数据复制到第二个表中,我想我明白为什么,只是不知道如何解决。
两个表都存在于同一个数据库中。
第一个表名为woocommerce_order_itemmeta,其结构如下:
meta_id,
order_item_id,
meta_key,
meta_value
前两列不需要复制,因为它们包含的信息仅与 WooCommerce 本身有关。
以下两列的工作方式如下;当我创建一个输入字段作为产品附加组件并且客户完成订单时,meta_key 字段包含它是哪个 input 以及 meta_value包含客户输入的信息。
例如:
**meta_key** = Lastname, **meta_value** = Smith,
**meta_key** = Firstname, **meta_value** = John,
每个订单可能有 56 个与之关联。
现在,一旦在 WooCommerce 中将订单标记为已完成,我需要它执行将该特定订单的数据传输/复制到具有完全不同结构的第二个数据库中。
第二个表是signUps,它的结构更简单:
num,
teamRole,
lName,
fName,
mName,
guardianMother,
guardianMphone,
guardianFather,
guardianFphone
等...总共 57 行。 num 列是自增整数,可以跳过。
我遇到的问题是列不匹配 4 到 57,据我所知,这也有点困难,因为我必须选择 **meta_value** WHERE the **meta_key** is *X* 并为每个条目执行此操作,然后将信息复制到更简单的表格中。
我怀疑如果我有一个更清晰的结构并且可以获取“姓、名、中间名等”的值而无需首先将其标识为 KEY,那么只需将其插入“ lName、fName、mname 等"。
到目前为止,我可以在 phpMyAdmin 中得到以下查询:
INSERT INTO `signUps`(lName) SELECT `meta_value` FROM `woocommerce_order_itemmeta` WHERE `meta_key` = 'Lastname';
当我试图找到向查询添加第二个值的方法时,问题就出现了。
我基本上需要的是一种将收集到的所有数据复制到第二个表中相应列的方法。
我遇到的第二个问题是,当我按照文档所说的方式使用 woocommerce_order_status_completed 操作挂钩时,我们根本无法触发任何东西。
add_action( 'woocommerce_order_status_completed', 'register_player' );
唯一需要注意的是,我无法更改任何一个表的结构——它们就是这样,因为许多其他不相关的函数都严重依赖它们。 (这实际上有点令人沮丧。)我喜欢只使用一张表而不是复制信息,但是我会重新编写别人的整个联盟管理应用程序,我既缺乏时间又缺乏这样做的专业知识。
任何解决方案将不胜感激。谢谢各位。
【问题讨论】:
标签: php mysql woocommerce