根据自定义帖子类型匹配/查询自动填写结帐输入

我最近遇到了一个让我有些困惑的问题。 在我的WP设置中,我有一个基本的WooCommerce解决方案,(对于主题,我正在使用Timber starter主题来利用树枝模板)。除此之外,我正在使用名为“ sites”的自定义帖子类型。网站代表建筑工地清单,请勿与网站混淆。

网站CPT具有X个高级自定义字段“字段”以及标准的“标题”,ACF字段为:

  • PO号(po_number)-> 字符串->必需/不为空
  • 职位编号(job_number)-> 字符串->必需/不为空
  • 街道地址(街道地址)-> 字符串->必需/不为空
  • 办公室名称(office_name)-> 字符串->必需/不为空
  • 镇(镇)-> 字符串->必需/不为空
  • 县(县)-> 字符串->可选/可为空
  • 邮政编码(post_code)-> 字符串->必需/不为空

因此,从管理员角度来说,上述大多数操作都是必需的,因此我们知道数据将会存在。

我遇到的问题是,在结帐上,我们希望与上述内容匹配的字段以及电子邮件地址字段(必填)和联系电话字段(必填)。

目的是,当客户键入他们的“职位编号”并单击“查找”按钮时,将启动一个查询,将其与“自定义帖子类型”上的“职位编号”字段进行匹配找到后,该记录中的其他字段将填写到结帐表单的其余部分中。


就尝试解决方案而言,我唯一能做的就是数据库查询以匹配并返回数据,但对于WP来说,我还是一个新手,似乎有些概念,例如Ajax具有在WP的特定用例中,数据库结构似乎相当复杂,因此我想在这里询问是否有人解决方案。

到目前为止,还没有代码可以显示,否则就WooCommerce模板而言,它们都是标准的,尚未修改。

总结一下,目标是:

客户去结帐->输入其已知的职位编号并点击'查找'->运行某种查询以将该职位编号与职位编号的CPT ACF字段进行匹配->如果找到匹配项,则返回这些字段,然后用该数据填充Woo Checkout字段。

非常欢迎任何想法的解决方案或建议,谢谢。

penglaoda 回答:根据自定义帖子类型匹配/查询自动填写结帐输入

您可以使用自定义代码以及下面的一些最佳逻辑来做任何您想做的事情。

请遵循以下逻辑/步骤。

  

创建自定义字段结帐

首先在结帐页面woo-commerce上创建自定义字段:custom field

https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/

也不要忘记添加复选按钮

  

创建ajax调用(WP-ajax)并在按钮上进行设置。

Create ajax call by clicking on a button and get user detail by job id

  

您必须编写代码以从ajax函数上的job_number中获取用户数据,而ajax函数是与ajax函数匹配的返回用户。 (你)

     

按用户meta获取用户(您必须将job_number与用户meta存储在一起才能按job_number获取用户详细信息)get_user_meta:您将从用户meta获取用户ID。

     

当您获得用户ID时,您可以轻松找到看上去像运送地址,账单地址等的用户woocommerce用户元,并且您想通过自定义ajax调用返回这些数据,并使用jquery在woocommerce结帐字段中进行设置

希望您能从我的逻辑和步骤中得到启发。

谢谢。

,

如果您只有数百个“站点”,则只需本地化脚本即可。

https://developer.wordpress.org/reference/functions/wp_localize_script/

然后,当DOM中具有该CDATA变量时,您可以仅使用jQuery / javascript查找匹配的作业并填写表单字段。从那里开始,我建议使用WC文档及其挂钩/过滤器将字段添加到结帐并在结帐时验证这些字段。这也是一个说明该过程的链接。

https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

底线?如果您有几百个字段,只需将数据本地化为可以在前端读取的变量。如果更多,那么您可能要使用AJAX。但是任何少于几百的东西实际上将减少服务器上使用的资源并加快负载。

本文链接:https://www.f2er.com/3059131.html

大家都在问