将自定义产品元数据传递到Woocommerce 3中的订单

布拉德·福尔摩斯

在Woocommerce中,我试图向我的产品添加一个自定义元,我希望将其传递给订单。

我们有大量的产品,它们要对不同的成本中心负责,因此我需要在产品管理员内部选择一个框,以便我们选择将价值传递给订单的成本中心,客户无需查看该成本中心,但是管理员必须在订单中以及每个月的订单出口中都可以查看以进行会计处理。

这是我到目前为止所拥有的,它将在产品编辑页面(admin)中显示选择框

// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

  echo '<div class="options_group">';

    woocommerce_wp_select( 
    array( 
    'id'      => '_select', 
    'label'   => __( 'Cost Centre', 'woocommerce' ), 
    'options' => array(
        'one'   => __( 'MFEG', 'woocommerce' ),
        'two'   => __( 'YDIT', 'woocommerce' ),
        )
    )
);

  echo '</div>';

}

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );

function woo_add_custom_general_fields_save( $post_id ){


    // Select
    $woocommerce_select = $_POST['_select'];
    if( !empty( $woocommerce_select ) )
        update_post_meta( $post_id, '_select', esc_attr( $woocommerce_select ) );

}

但是它没有将值传递给订单。

如何将此自定义字段值传递给订单?

LoicTheAztec

我再次回顾了您的代码。以下内容会将您的产品自定义字段“成本中心”保存为隐藏的订单商品元数据,仅在每个商品的“管理订单”编辑页面中可见:

// Admin products: Display custom Field
add_action( 'woocommerce_product_options_general_product_data', 'product_options_general_product_data_add_field' );
function product_options_general_product_data_add_field() {
    global $post;

    echo '<div class="options_group">';

    woocommerce_wp_select( array(
        'id'      => '_cost_centre',
        'label'   => __( 'Cost Centre', 'woocommerce' ),
        'options' => array(
            'MFEG'   => __( 'MFEG', 'woocommerce' ), // Default displayed option value
            'YDIT'   => __( 'YDIT', 'woocommerce' ),
        )
    ) );

    echo '</div>';
}

// Admin products: Save custom Field
add_action( 'woocommerce_process_product_meta', 'product_options_general_product_data_save_field' );
function product_options_general_product_data_save_field( $post_id ){
    if( isset( $_POST['_cost_centre'] ) )
        update_post_meta( $post_id, '_cost_centre', esc_attr( $_POST['_cost_centre'] ) );
}

// Order items: Save product "Cost centre" as hidden order item meta data
add_action('woocommerce_checkout_create_order_line_item', 'save_file_type_as_order_item_meta', 20, 4);
function save_file_type_as_order_item_meta($item, $cart_item_key, $values, $order) {
    if ( $cost_centre = $values['data']->get_meta('_cost_centre') ) {
        $item->update_meta_data( '_cost_centre', $cost_centre ); // Save as order item (visble on admin only)
    }
}

代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

在此处输入图片说明

出口: (在StackOverflow上,规则是一个问题一个答案

WordPress / Woocommerce基本订单导出不允许导出订单商品

您将需要使用第三方插件,并且根据所选择的插件,您将必须_cost_centre根据插件的可能性为导出添加订单项自定义字段

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将自定义字段数据保存到Woocommerce产品变体的购物车和订单

如何在新订单电子邮件中显示WooCommerce自定义产品元?

将产品自定义字段值保存为WooCommerce中的自定义订单项元

如何从ui-router中的视图将自定义数据传递到状态?

在Woocommerce中将产品的自定义元数据添加到订单项

将自定义购物车商品值添加到WooCommerce订单商品元数据

在WooCommerce中将订单商品自定义元数据自动添加到订单注释中

将自定义数据传递给React中的PrivateRoute组件

在Woocommerce 3中获取自定义订单项元数据

在Woocommerce 3中检索自定义订单项目元数据值

在Woocommerce 3中将产品自定义字段显示为订单项

添加到Woocommerce的自定义元数据未在订单项元中显示

将自定义数据传递到vue-router中的$ router.push()

将自定义发布的变量从页面传递到Woocommerce订单数据

在Woocommerce 3中将自定义结帐字段添加为“订购自定义元数据”

在Woocommerce 3中将自定义元数据添加到管理订单编辑页面

在Woocommerce 3中使用购物车项目自定义数据更新订单元

在Woocommerce 3中将购物车项目中的自定义数据传递到Order meta

从Woocommerce商店页面中的特定自定义元数据过滤产品

在Woocommerce 3中保存并显示订单自定义元数据

保存订购产品变体到订单的自定义元数据

将自定义产品元数据传递到Woocommerce 4中的订单

将自定义数据传递到Symfony / Twig中的表单主题

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

将自定义元数据保存到Shipstation的WooCommerce订单

如何将自定义数据传递到Yii中的EDataTables

将参数/输入数据传递到javascript中的自定义元素

将自定义数据传递给request_futures中的异常

在 WooCommerce 中添加产品自定义输入文本作为订单项目数据