处理后的订单中显示产品自定义字段值

时间:2017-02-07 09:41:27

标签: php wordpress woocommerce checkout orders

在woocommerce上,我使用下面的代码在购物车和结帐时呈现一些产品自定义字段:

add_filter( 'woocommerce_get_item_data', 'rendering_meta_field_on_cart_and_checkout', 10, 2 );

function rendering_meta_field_on_cart_and_checkout( $cart_data, $cart_item ) {
    $custom_items = array();

    if( !empty( $cart_data ) ) {
        $custom_items = $cart_data;
    }
    if( isset( $cart_item['wccpf_enter_product_id'] ) ) {

        $diamond = $cart_item['wccpf_enter_product_id'];

        $pacolor = get_the_terms($diamond, 'pa_color');
        foreach ( $pacolor  as $pacolor  ) {
           $color= $pacolor ->name;
        }


        $custom_items[] = array( "name" => "color", "value" => $color);
    }
    return $custom_items;
}

如何显示自定义产品字段wccpf_enter_product_id'订单价值?

感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用挂钩在woocommerce_add_order_item_meta动作挂钩中的自定义函数来实现此目的。

  

您需要先在产品中添加一个属性,以便为您的自定义字段值获取“可读的干净标签”,该字段值将显示为订单商品元数据。

     

为此,您必须先创建一个属性,然后在产品中设置任何值(因为您将在下面的代码中替换此值)。

     

请参阅HERE关于该过程的更多解释......

     

您必须在我的代码中使用您在 'custom_field_key' MySQL表格中找到的特定自定义密钥替换 wp_woocommerce_order_itemmeta 您特定订单ID的相应商品ID。
  要为订单找到相应的 item ID ,您可以使用订单ID在 wp_woocommerce_order_items MySQL表中进行搜索...

     

您还必须设置正确的属性slug而不是 'pa_your_attribute' ,以在订单中显示此自定义字段值的正确标签文本。
  (参见下面其他类似的答案参考资料)。

所以你的代码将是这样的:

// ADD THE INFORMATION AS META DATA SO THAT IT CAN BE SEEN AS PART OF THE ORDER
add_action('woocommerce_add_order_item_meta','add_and_update_values_to_order_item_meta', 1, 3 );
function add_and_update_values_to_order_item_meta( $item_id, $item_values, $item_key ) {

    // Getting your custom product ID value from order item meta
    $custom_value = wc_get_order_item_meta( $item_id, 'custom_field_key', true );

    // Here you update the attribute value set in your simple product
    wc_update_order_item_meta( $item_id, 'pa_your_attribute', $custom_value );
    }
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

这应该有效

相关答案: