在 Woocommerce 的函数中添加以下代码段,以克隆输入框并在购物车元数据中显示:
add_action( 'woocommerce_before_add_to_cart_button', 'cloned_input_field' );
function cloned_input_field() {
?>
<div class="cloned_field">
<?php
woocommerce_form_field( 'cloned_field_name', array(
'type' => 'text',
'label' => __('Cloned Field Label', 'woocommerce'),
), '');
?>
</div>
<?php
}
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_custom_data', 10, 2 );
function add_cart_item_custom_data( $cart_item_data, $product_id ) {
$unique_cart_item_key = md5( microtime().rand() );
$cart_item_data['unique_key'] = $unique_cart_item_key;
// Cloned field value
$cloned_field_value = $_POST['cloned_field_name'];
$cart_item_data['cloned_field_name'] = $cloned_field_value;
return $cart_item_data;
}
add_filter( 'woocommerce_get_item_data', 'get_item_data', 10, 2 );
function get_item_data( $data, $cart_item ) {
if( isset( $cart_item['cloned_field_name'] ) ) {
$data[] = array(
'key' => __('Cloned Field Label', 'woocommerce' ),
'value' => $cart_item['cloned_field_name']
);
}
return $data;
}
以上代码中,cloned_input_field()
添加了克隆的输入框,add_cart_item_custom_data()
将克隆的字段值添加到购物车元数据中,get_item_data()
输出购物车元数据。在模板文件中,通过使用 echo $cart_item['cloned_field_name'];
输出购物车元数据的值。