将自定义字段数据添加到WooCommerce订单

MV-123

我在WooCommerce单一产品上有一个自定义字段。它将发送到购物车罚款,在结帐罚款中显示,并在仪表板罚款中按顺序显示。

我现在想做的是将值设置为订单页面中的自定义字段,这样我就可以在需要时修改文本。由于某种原因,当我提交表单时,此步骤无法正常工作。

我在functions.php文件中使用的代码

// Add the field to the product
add_action('woocommerce_before_add_to_cart_button', 'my_custom_checkout_field');

function my_custom_checkout_field() {
    echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
    echo  '<label>fill in this field</label> <input type="text" name="my_field_name">';
    echo '</div>';
}

// Store custom field
function save_my_custom_checkout_field( $cart_item_data, $product_id ) {
    if( isset( $_REQUEST['my_field_name'] ) ) {
        $cart_item_data[ 'my_field_name' ] = $_REQUEST['my_field_name'];
        /* below statement make sure every add to cart action as unique line item */
        $cart_item_data['unique_key'] = md5( microtime().rand() );
    }
    return $cart_item_data;
}
add_action( 'woocommerce_add_cart_item_data', 'save_my_custom_checkout_field', 10, 2 );

// Render meta on cart and checkout
function render_meta_on_cart_and_checkout( $cart_data, $cart_item = null ) {
    $custom_items = array();
    /* Woo 2.4.2 updates */
    if( !empty( $cart_data ) ) {
        $custom_items = $cart_data;
    }
    if( isset( $cart_item['my_field_name'] ) ) {
        $custom_items[] = array( "name" => 'My Field', "value" => $cart_item['my_field_name'] );
    }
    return $custom_items;
}
add_filter( 'woocommerce_get_item_data', 'render_meta_on_cart_and_checkout', 10, 2 );

// Display as order meta
function my_field_order_meta_handler( $item_id, $values, $cart_item_key ) {
    if( isset( $values['my_field_name'] ) ) {
        wc_add_order_item_meta( $item_id, "my_field_name", $values['my_field_name'] );
    }
}
add_action( 'woocommerce_add_order_item_meta', 'my_field_order_meta_handler', 1, 3 );

/** THIS IS WHERE I'M STUCK **/

add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
    global $woocommerce;

    // Check if set, if its not set add an error. This one is only requite for companies
    if ($_POST['billing_company'])
        if (!$_POST['my_field_name']) 
            $woocommerce->add_error( __('Please enter your XXX.') );
}
// Update the user meta with field value
add_action('woocommerce_checkout_update_user_meta', 'my_custom_checkout_field_update_user_meta');
function my_custom_checkout_field_update_user_meta( $user_id ) {
    if ($user_id && $_POST['my_field_name']) update_user_meta( $user_id, 'my_field_name', esc_attr($_POST['my_field_name']) );
}

// Update the order meta with field value

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 ($_POST['my_field_name']) update_post_meta( $order_id, 'My Field', esc_attr($_POST['my_field_name']));
}

当前发生的屏幕截图:

当前情况的屏幕截图



我想发生的事情:

what I would like to happen


任何帮助将不胜感激。

LoicTheAztec

更新:与Woocommerce版本3+的兼容性

您缺少在订单编辑页面上显示此自定义字段值的功能:

/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta( $order ){
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
    echo '<p><strong>'.__('My Field Name').':</strong> ' . get_post_meta( $order_id, 'my_field_name', true ) . '</p>';
}

在下面的参考链接上,您具有所有原始的wooThemes功能工作代码段。这是一个出色的功能齐全的教程。

参考:[使用操作和过滤器自定义结帐字段] [1]


编辑:获取在订单项元中与您的自定义字段值一起显示的自定义标签

要使用自定义字段值(在订单项meta中)而不是像my_field_name这样的标签来获得像“ MY field name这样的自定义标签,请参考以下步骤:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在WooCommerce中将自定义结帐字段值添加到客户订单注释中

来自分类Dev

将自定义ajax按钮添加到WooCommerce管理订单列表

来自分类Dev

Woocommerce和Opayo:将自定义字段添加到发送到API的数据中

来自分类Dev

在WooCommerce中将自定义字段添加到简码显示

来自分类Dev

将自定义字段添加到WooCommerce新帐户页面

来自分类Dev

如何在Woocommerce中将自定义字段添加到类别中?

来自分类Dev

将自定义字段添加到Django admin

来自分类Dev

将自定义字段属性添加到CsvHelper

来自分类Dev

将自定义字段添加到后端表单

来自分类Dev

将自定义字段添加到索引结果

来自分类Dev

将自定义字段添加到Django admin

来自分类Dev

使用 EPPlus 将自定义数据字段添加到 Excel 数据透视表

来自分类Dev

将自定义文本添加到本地取货 Woocommerce 订单的特定电子邮件通知

来自分类Dev

将自定义字段添加到Adminhtml表单并填充数据(Magento 2)

来自分类Dev

将自定义变量/数据添加到AngularFirestoreDocument

来自分类Dev

将自定义元数据添加到pdf

来自分类Dev

如何根据合作伙伴表单中的字段将自定义过滤器/自定义搜索字段添加到销售订单视图

来自分类Dev

Magento-将自定义属性添加到订单

来自分类Dev

Magento将自定义按钮添加到订单创建页面

来自分类Dev

Magento:将自定义属性添加到订单网格

来自分类常见问题

在WooCommerce后端中将自定义字段添加为默认值,并填充以前的订单

来自分类Dev

如何将自定义地图和自定义数据添加到Highmaps?

来自分类Dev

将自定义用户字段传递给WooCommerce订单元数据

来自分类Dev

如何将我的自定义字段添加到 Woocommerce 订单流程(查看表单、订单详细信息和电子邮件流程)

来自分类Dev

如何在woocommerce中的新订单电子邮件中显示高级自定义字段数据

来自分类Dev

WooCommerce:将自定义模板添加到客户帐户页面

来自分类Dev

在WooCommerce中将自定义占位符添加到电子邮件主题

来自分类Dev

将自定义角色过滤器添加到wordpress woocommerce shop_manager

来自分类Dev

WooCommerce:将自定义模板添加到客户帐户页面

Related 相关文章

  1. 1

    在WooCommerce中将自定义结帐字段值添加到客户订单注释中

  2. 2

    将自定义ajax按钮添加到WooCommerce管理订单列表

  3. 3

    Woocommerce和Opayo:将自定义字段添加到发送到API的数据中

  4. 4

    在WooCommerce中将自定义字段添加到简码显示

  5. 5

    将自定义字段添加到WooCommerce新帐户页面

  6. 6

    如何在Woocommerce中将自定义字段添加到类别中?

  7. 7

    将自定义字段添加到Django admin

  8. 8

    将自定义字段属性添加到CsvHelper

  9. 9

    将自定义字段添加到后端表单

  10. 10

    将自定义字段添加到索引结果

  11. 11

    将自定义字段添加到Django admin

  12. 12

    使用 EPPlus 将自定义数据字段添加到 Excel 数据透视表

  13. 13

    将自定义文本添加到本地取货 Woocommerce 订单的特定电子邮件通知

  14. 14

    将自定义字段添加到Adminhtml表单并填充数据(Magento 2)

  15. 15

    将自定义变量/数据添加到AngularFirestoreDocument

  16. 16

    将自定义元数据添加到pdf

  17. 17

    如何根据合作伙伴表单中的字段将自定义过滤器/自定义搜索字段添加到销售订单视图

  18. 18

    Magento-将自定义属性添加到订单

  19. 19

    Magento将自定义按钮添加到订单创建页面

  20. 20

    Magento:将自定义属性添加到订单网格

  21. 21

    在WooCommerce后端中将自定义字段添加为默认值,并填充以前的订单

  22. 22

    如何将自定义地图和自定义数据添加到Highmaps?

  23. 23

    将自定义用户字段传递给WooCommerce订单元数据

  24. 24

    如何将我的自定义字段添加到 Woocommerce 订单流程(查看表单、订单详细信息和电子邮件流程)

  25. 25

    如何在woocommerce中的新订单电子邮件中显示高级自定义字段数据

  26. 26

    WooCommerce:将自定义模板添加到客户帐户页面

  27. 27

    在WooCommerce中将自定义占位符添加到电子邮件主题

  28. 28

    将自定义角色过滤器添加到wordpress woocommerce shop_manager

  29. 29

    WooCommerce:将自定义模板添加到客户帐户页面

热门标签

归档