如何在WooCommerce订单中显示产品自定义字段(自定义SKU)



是否有办法在WooCommerce订单页面上的每个产品下显示我的自定义SKU ?

当我编辑产品时,自定义sku显示得很好,但它没有显示在产品的订单页面中。我需要在订单上显示这些信息,以便Zapier可以将其与产品的Visma Account Software ArticleID相匹配。

这个尝试是基于解决方案如何添加一个(第二个)自定义sku字段到WooCommerce产品?

// Add Custom SKU Field
function my_add_custom_sku() {
$args = array(
'label' => __( 'ArticleID', 'woocommerce' ),
'placeholder' => __( 'Enter Visma ArticleID Here', 'woocommerce' ),
'id' => 'articleid',
'desc_tip' => true,
'description' => __( 'Visma ArticleID is for integration with Zapier.', 'woocommerce' ),
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_sku', 'my_add_custom_sku' );
// Save
function my_save_custom_meta( $product ){
if( isset($_POST['articleid']) ) {
$product->update_meta_data( 'articleid', sanitize_text_field( $_POST['articleid'] ) );
}
}
add_action( 'woocommerce_admin_process_product_object', 'my_save_custom_meta', 10, 1 );

您可以使用钩子woocommerce_checkout_create_order_line_item将此产品自定义字段保存为自定义订单项数据,当下订单时,如下(并在订单和电子邮件中显示它):

// Save as custom order item meta data and display on orders and email notifications
add_action( 'woocommerce_checkout_create_order_line_item', 'add_articleid_on_orders_and_emails', 10, 4 );
function add_articleid_on_orders_and_emails( $item, $cart_item_key, $values, $order ) {
$articleid = $values['data']->get_meta('articleid'); // Get product "articleid"
// For product variations when the "articleid" is not defined
if ( empty($articleid) && $values['variation_id'] > 0 ) {
$product    = wc_get_product( $values['product_id'] ); // Get the parent variable product
$articleid = $product->get_meta( 'articleid' );  // Get parent product "articleid"
}
if ( ! empty($articleid) ) {
$item->add_meta_data( 'articleid', $articleid ); // add it as custom order item meta data
}
}

和下面的修改"article "显示带有可读标签名称"ArticleID"(客户订单和邮件通知):

// Replace the label (slug) by a readable label name on orders and emails
add_filter( 'woocommerce_order_item_display_meta_key', 'filter_order_item_display_meta_key', 10, 3 );
function filter_order_item_display_meta_key( $display_key, $meta, $item ) {
// Not on Admin
if ( ! is_admin() && $display_key === 'articleid' ) {
$display_key = __('ArticleID', 'woocommerce');
}
return $display_key;
}

代码放在活动子主题(或活动主题)的functions.php文件中。

与此线程相关:

  • 更改WooCommerce管理订单页面中显示的订单项元密钥标签
  • 仅在WooCommerce Admin单个订单中显示产品自定义字段
  • 更改WooCommerce管理订单页面中显示的订单项元密钥标签

相关内容

  • 没有找到相关文章

最新更新