根据自定义 post 类型匹配/查询自动填充结帐输入
Autofill checkout inputs based on custom post type match / query
我最近遇到了一个让我有点困惑的问题。
在我的 WP 设置中,我有一个基本的 WooCommerce 解决方案,(对于主题,我使用 Timber 入门主题来利用 twig 模板)。除此之外,我正在使用名为 'sites' 的自定义 post 类型。站点代表建筑工地列表,不要与网站混淆。
站点 CPT 有 X 个高级自定义字段 'fields',以及标准 'title',ACF 字段为:
- 采购订单编号 (po_number) -> 字符串 -> 必需/不为空
- 工作编号 (job_number) -> 字符串 -> 必需/不为空
- 街道地址 (street_address) -> String -> 必需/不为空
- 办公室名称 (office_name) -> 字符串 -> 必填/不为空
- Town(城镇)-> String -> 必填/非空
- County(县)-> String -> 可选/可为空
- Post 代码 (post_code) -> String -> 必需/不为 null
以上来自管理员的大部分内容都是必需的,因此我们知道数据将会存在。
我遇到的问题是,在 结账 时,我们需要与上述匹配的字段,以及电子邮件地址字段(必填)和联系电话字段(必填)。
目的是,当客户输入 'Job Number' 并点击 'Find' 按钮时,将启动一个查询,将此职位编号与自定义 [= 上的职位编号字段相匹配77=] 键入,如果找到匹配项,则该记录中的其他字段将填写到结帐表单的其余部分。
在尝试解决方案方面,我唯一能做的就是匹配数据库查询和 return 数据,但我对整个 WP 还是相当陌生,似乎有Ajax 等概念在 WP 中有特定的用例,数据库结构似乎很复杂,所以我想我会在这里问一下,看看是否有人有解决方案。
到目前为止,还没有代码可以显示,否则我会,并且就 WooCommerce 模板而言,它们都是标准的,没有被修改。
总结一下,目标是:
客户去结账 -> 输入他们已知的职位编号并点击 'Find' -> 某种查询是 运行 将该职位编号与职位编号的 CPT ACF 字段匹配 ->如果找到匹配项,return 这些字段并用该数据填充 Woo Checkout 字段。
非常欢迎任何想法解决方案或建议,在此先感谢您。
如果您只有几百个 'sites' 那么只需本地化一个脚本即可。
https://developer.wordpress.org/reference/functions/wp_localize_script/
然后,当您在 DOM 中有可用的 CDATA 变量时,您只需使用 jQuery/javascript 即可找到匹配的职位并填写表单字段。从那里,我建议使用 WC 文档及其 hooks/filters 向结帐添加字段并在结帐时验证这些字段。这里有一个 link 也解释了这个过程。
底线?如果您有几百个字段,只需将数据本地化到一个可以在前端读取的变量中。如果更多,那么您可能要使用 AJAX。但是少于几百个实际上会减少服务器上使用的资源并加快加载速度。
您可以使用自定义代码以及我将向您解释的一些最佳逻辑来做任何您想做的事情。
按照下面的logic/step。
Create custom field checkout
首先在结帐页面 woo-commerce 上创建自定义字段:custom field
https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/
并且不要忘记添加复选按钮
create ajax call ( WP-ajax ) and set-up on a button.
Create ajax call by clicking on a button and get user detail by job id
You have to write code to get the user data from the job_number on the ajax function that is the returning user that matches the ajax function. ( you )
get the user by user meta ( you have to store job_number with user meta to get user detail by job_number) get_user_meta : you will get user id from user meta.
as you will get user id you can easily find the user woocommerce user meta that seems shipping address, billing address, etc. and you suppose to return those data with your custom ajax call and set in the field of woocommerce checkout using jquery.
我希望你能从我的逻辑和步骤中得到一个想法。
谢谢。
我最近遇到了一个让我有点困惑的问题。 在我的 WP 设置中,我有一个基本的 WooCommerce 解决方案,(对于主题,我使用 Timber 入门主题来利用 twig 模板)。除此之外,我正在使用名为 'sites' 的自定义 post 类型。站点代表建筑工地列表,不要与网站混淆。
站点 CPT 有 X 个高级自定义字段 'fields',以及标准 'title',ACF 字段为:
- 采购订单编号 (po_number) -> 字符串 -> 必需/不为空
- 工作编号 (job_number) -> 字符串 -> 必需/不为空
- 街道地址 (street_address) -> String -> 必需/不为空
- 办公室名称 (office_name) -> 字符串 -> 必填/不为空
- Town(城镇)-> String -> 必填/非空
- County(县)-> String -> 可选/可为空
- Post 代码 (post_code) -> String -> 必需/不为 null
以上来自管理员的大部分内容都是必需的,因此我们知道数据将会存在。
我遇到的问题是,在 结账 时,我们需要与上述匹配的字段,以及电子邮件地址字段(必填)和联系电话字段(必填)。
目的是,当客户输入 'Job Number' 并点击 'Find' 按钮时,将启动一个查询,将此职位编号与自定义 [= 上的职位编号字段相匹配77=] 键入,如果找到匹配项,则该记录中的其他字段将填写到结帐表单的其余部分。
在尝试解决方案方面,我唯一能做的就是匹配数据库查询和 return 数据,但我对整个 WP 还是相当陌生,似乎有Ajax 等概念在 WP 中有特定的用例,数据库结构似乎很复杂,所以我想我会在这里问一下,看看是否有人有解决方案。
到目前为止,还没有代码可以显示,否则我会,并且就 WooCommerce 模板而言,它们都是标准的,没有被修改。
总结一下,目标是:
客户去结账 -> 输入他们已知的职位编号并点击 'Find' -> 某种查询是 运行 将该职位编号与职位编号的 CPT ACF 字段匹配 ->如果找到匹配项,return 这些字段并用该数据填充 Woo Checkout 字段。
非常欢迎任何想法解决方案或建议,在此先感谢您。
如果您只有几百个 'sites' 那么只需本地化一个脚本即可。
https://developer.wordpress.org/reference/functions/wp_localize_script/
然后,当您在 DOM 中有可用的 CDATA 变量时,您只需使用 jQuery/javascript 即可找到匹配的职位并填写表单字段。从那里,我建议使用 WC 文档及其 hooks/filters 向结帐添加字段并在结帐时验证这些字段。这里有一个 link 也解释了这个过程。
底线?如果您有几百个字段,只需将数据本地化到一个可以在前端读取的变量中。如果更多,那么您可能要使用 AJAX。但是少于几百个实际上会减少服务器上使用的资源并加快加载速度。
您可以使用自定义代码以及我将向您解释的一些最佳逻辑来做任何您想做的事情。
按照下面的logic/step。
Create custom field checkout
首先在结帐页面 woo-commerce 上创建自定义字段:custom field
https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/
并且不要忘记添加复选按钮
create ajax call ( WP-ajax ) and set-up on a button.
Create ajax call by clicking on a button and get user detail by job id
You have to write code to get the user data from the job_number on the ajax function that is the returning user that matches the ajax function. ( you )
get the user by user meta ( you have to store job_number with user meta to get user detail by job_number) get_user_meta : you will get user id from user meta.
as you will get user id you can easily find the user woocommerce user meta that seems shipping address, billing address, etc. and you suppose to return those data with your custom ajax call and set in the field of woocommerce checkout using jquery.
我希望你能从我的逻辑和步骤中得到一个想法。
谢谢。