在WooCommerce 3+中向订单添加自定义字段

问题描述

在WooCommerce中,我想添加一个新的自定义字段来订购详细信息。现在,我可以使用下面的代码创建一个新的自定义字段“ referenceNumber”,并在其中添加“ ordercreated”值:

update_post_Meta($order_id,'referenceNumber','ordercreated']);

我想要的是在下订单后通过结帐来实现。

但是它不起作用,不会在订单详细信息页面添加新的自定义字段,也不会添加“ ordercreated”值,如您在此屏幕快照中所见:

screenshot

所以问题是当在WooCommerce中下订单时如何添加自定义字段

解决方法

要将自定义字段添加到订单中,可以使用:

  • WordPress update_post_meta()函数(来自订单ID)

    $order_id = $order->get_id(); // If needed
    
    update_post_meta($order_id,'referenceNumber','ordercreated'); // add and save the custom field
    
  • WooCommerce WC_Data update_meta_data()方法(来自订单对象或订单ID)

    $order = wc_get_order( $order_id ); // If needed: Get the WC_Order object from the order Id
    
    update_meta_data('referenceNumber','ordercreated'); // Add the custom field
    
    $order->save(); // Save the data
    

其中referenceNumber元键,而ordercreated元值。两者都可以。


现在要在订单中添加自定义字段客户下订单时,您可以使用:

  • woocommerce_checkout_create_order操作挂钩(保存订单数据之前-用于在保存之前调整订单数据)

    add_action( 'woocommerce_checkout_create_order','add_custom_field_on_placed_order',10,2 );
    function add_custom_field_on_placed_order( $order,$data ){
        $order->update_meta_data( 'referenceNumber','ordercreated' );
    }
    
  • woocommerce_checkout_update_order_meta 操作挂钩(订单已存在-用于添加自定义元数据)

    add_action( 'woocommerce_checkout_create_order',2 );
    function add_custom_field_on_placed_order( $order_id,'ordercreated' );
    }
    
  • woocommerce_checkout_order_created 操作挂钩(订单已存在-触发操作或添加自定义元数据)

    add_action( 'woocommerce_checkout_order_created','ordercreated' ); // Add the custom field
        $order->save(); // Save data (as order exist yet)
    }
    

    或者:

    add_action( 'woocommerce_checkout_order_created','add_custom_field_on_placed_order' );
    function add_custom_field_on_placed_order( $order ){
        update_post_meta($order->get_id(),'ordercreated');
    }
    

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

,

嗨,我几天前有类似的要求,因为我需要在结帐时添加新字段。下一篇文章对我有所帮助。您也可以检查它。链接在这里。基本上,您将拥有一个使用woo Commerce hook “ woocommerce_default_address_fields” 的写函数 https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/