当前位置: 首页 > 知识库问答 >
问题:

保存签出自定义字段将值合并到Web Commerce中的现有字段

颛孙昆
2023-03-14

我已经为WooCommerce创建了以下自定义结账字段,基于可以找到的所有示例。

  • 账单门牌号billing_houseno
  • 船运门牌号shipping_houseno

输出显示地址字段(街道)和门牌号字段。很好用。将数据很好地存储在自定义门牌号字段中,地址的工作原理与正常情况相同——当然。

我想将以下字段合并到一个字段中:

  • billing_address_1billing_housenobilling_address_1现有字段中。
  • shipping_address_1shipping_housenoshipping_address_1现有字段中。

因此,它将在一个数据库字段中合并这两个字段。

是否有办法将两个字段存储在一个现有字段中?

共有3个答案

羊舌光赫
2023-03-14
<?php
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_houseno'] ) ) {
        $billing_houseno = $_POST['billing_houseno'];
        $billing_address_1 = $_POST['billing_address_1'];
        $new_billing_address = $billing_houseno.'.'.$billing_address_1;
        update_post_meta( $order_id, '_billing_address_1', $new_billing_address );
    }
    if(!empty($_POST['shipping_houseno'])){
        $shipping_houseno = $_POST['shipping_houseno'];
        $shipping_address_1 = $_POST['shipping_address_1'];
        $new_shipping_address = $shipping_houseno.'.'.$shipping_address_1;
        update_post_meta( $order_id, '_shipping_address_1', $new_shipping_address );    
    }
}
?>
南门朗
2023-03-14

试试这个

add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta',10,2);

function customise_checkout_field_update_order_meta($order_id, $posted_data)
{
//write your code here to update custom data.
}
宦翔飞
2023-03-14

更新:

在您的注释代码链接中,您的代码中存在一些错误:

  1. 在您的bones_add_field_and_reorder_fields函数中,您正在取消设置账单和运输公司,但是在几行之后,您将尝试在以下内容中设置这些值:
$newfields['billing']['billing_company']   = $fields['billing']['billing_company'];
$newfields['shipping']['shipping_company'] = $fields['shipping']['shipping_company'];

它抛出了一些错误…
您不应该取消设置“账单公司”“发货公司”

使用woocommerce\u checkout\u update\u order\u metaaction挂钩中的自定义函数,您将能够合并这些值。

add_action( 'woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta', 10, 2 );
function custom_checkout_field_update_order_meta( $order_id ) {
    $separator = '. '; // Separator for merged fields

    // Billing fields
    $billing_address_1 = sanitize_text_field( $_POST['billing_address_1'] );
    $billing_houseno   = sanitize_text_field( $_POST['billing_houseno'] );

    if( ! ( empty($billing_address_1) && empty($billing_houseno) ) )
        update_post_meta( $order_id, '_billing_address_1', $billing_address_1 . $separator . $billing_houseno );

    $shipping_address_1 = sanitize_text_field( $_POST['shipping_address_1'] );
    $shipping_houseno   = sanitize_text_field( $_POST['shipping_houseno'] );

    if( ! ( empty($shipping_address_1) && empty($shipping_houseno) ) )
        update_post_meta( $order_id, '_shipping_address_1', $shipping_address_1 . $separator . $shipping_houseno );
}

代码进入函数。活动子主题(或活动主题)的php文件。

这一次,这是测试和工作。

 类似资料:
  • 我想在WooCommerce结帐页面中添加自定义字段,但用于选定的产品。 例如,如果客户的购物车中只有产品A,则此自定义字段应显示在WooCommerce签出页面中 我在函数中使用以下代码。php添加自定义字段:

  • 为什么我不能从Woocommerce签出字段中检索数据,以便在订单处理时更新订阅数据? 我想根据客户结帐时的频率请求更新下一个续订日期。这是我的密码: 1) 设置签出字段: 2) 更新订单元数据。这将在客户订单上创建两个自定义字段,并更新订阅上的计费间隔: 3) 更新续约日期 对于最后一部分,我可以使用我选择的虚拟日期更新续约日期(例如:,但当我试图让它读取字段时,它会恢复为默认值。 这是我尝试过

  • 我在印度使用进行在线支付, 我想要一个像账单地址这样的自定义字段应该存储在razorpay帐户和结帐表中。我知道,它将自定义数据存储到razorpay帐户,但我没有得到任何链接来设置结帐表单中的这些字段。 我的代码: 所以,我的问题是,如何在razorpay结账表单中获取所有字段?

  • 问题内容: 我花了几天的时间来尝试找出如何以编程方式将值保存或更新到CustomField中,最后弄清楚它是如何完成的。因此,我将提出一个问题,然后回答该问题,就像我希望获得该问题和答案一样。 关于如何保存或更新JIRA中“自定义字段”的值的文档相互矛盾。我正在使用: 这不会将值保存到数据库中,但据我所知确实会更新值。例如,仅当在工作流后功能转换中进一步使用CustomField时才有用。 我正在

  • 在WooCommerce结账页面上,我添加了一个客户必须输入才能结账的额外字段。 我想在woocommerce\u cart\u calculate\u fees操作挂钩中访问此字段的值。 通过使用woocommerce,我尝试了几种方法-

  • 遵循电子商务签出字段自定义文档: 使用操作和筛选器自定义签出字段 我已经通过函数向woocommerce结帐页面添加了一个自定义字段。php。 我担心是否必须清理自定义字段的用户输入? 我认为它不需要消毒,因为它被传递到帐单字段中,如:$fields['billing'],对吗? 如果没有,我如何清理这个自定义字段? 创建此自定义字段意味着接受长度不超过50的文本字符串(拉丁文)和整数的组合。

  • 我一直在编码一个WP插件,用于计算订单的平方英寸总体积,并通过自定义字段将其发送到Shipstation: 我通过SFTP上传到网站文件,它显示在WP上,但当我点击激活我得到一个致命的错误: 致命错误:未捕获错误:调用成员函数get_cart()在 /nas/content/live/sfmstaging/wp-content/plugins/boxCalc/boxCalc.php:10堆栈跟踪空

  • 我对woocommerce(最新版本)中的自定义字段有问题。我需要你的帮助。 我的代码 现在我在从自定义字段获取数据时遇到问题。字段被保存到数据库中,因为在我编辑产品时,值在字段中,但在完成订单后,我无法在钩子中获取它:(我尝试使用get_post_meta、get_meta和其他方法,但都不起作用。有人知道原因吗?