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

Php 处理后在订单中显示产品自定义字段值,php,wordpress,woocommerce,checkout,orders,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();

在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_输入_product_id'值


谢谢。

您可以使用woocommerce\u add\u order\u item\u meta action钩子中的自定义函数来实现这一点

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

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

请参阅有关该过程的更多说明

您必须在我的代码中用特定的自定义键替换“custom_field_key”,您可以在wp_woocommerce_order_itemmeta MySQL表中找到特定订单ID对应的项目ID。 要查找订单对应的项目ID,可以使用订单ID在wp_\u Commerce\u order\u 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文件中,或者位于任何插件文件中

这应该行得通

有关答案: