我一直在試圖向購物車中的每件商品添加單個文本輸入字段,並將該用戶輸入提交給產品的元信息。已經2天了,我還沒有成功。WooCommerce:爲購物車中的每件商品添加輸入字段
我的目標是:
- 採取從用戶輸入的每個項目添加到購物車。
- 在訂單的元信息中顯示該輸入。
- 顯示發送給客戶的確認郵件中的輸入內容。
到目前爲止,我已將模板文件複製到我的主題,並在單元格內添加了一個輸入字段。我在鉤子上遇到了問題,從WooCommerce Product Gift Wrap插件中瞭解到我需要的鉤子,如woocommerce issue所示。
我的代碼添加到我的主題目錄複製的模板cart.php:我添加到我的主題的functions.php的
$input_url_data = '<div class="input-url"><input type="text" name="cart-url" value="" title="" class="input-text cart-url text" /></div>';
echo apply_filters('woocommerce_add_cart_item_data', $input_url_data, $cart_item_key);
代碼:
add_filter('woocommerce_add_cart_item_data','add_cart_item_data', 10, 2);
add_filter('woocommerce_get_cart_item_from_session','get_cart_item_from_session', 10, 2);
add_filter('woocommerce_get_item_data','get_item_data', 10, 2);
add_filter('woocommerce_add_cart_item','add_cart_item', 10, 1);
add_action('woocommerce_add_order_item_meta','add_order_item_meta', 10, 2);
function add_cart_item_data($cart_item_meta, $product_id) {
$input_url_key = "";
$input_url_data['inputurl'] = $input_url_key;
return $input_url_data;
}
function get_cart_item_from_session($cart_item, $values) {
if (! empty($values['inputurl'])) {
$cart_item['inputurl'] = true;
}
return $cart_item;
}
function get_item_data($item_data, $cart_item) {
if (! empty($cart_item['inputurl']))
$item_data[] = array(
);
return $item_data;
}
function add_cart_item($cart_item) {
if (! empty($cart_item['inputurl'])) {
}
return $cart_item;
}
function add_order_item_meta($item_id, $cart_item) {
if (! empty($cart_item['inputurl']))
woocommerce_add_order_item_meta($item_id, __('URL by buyer', 'custom_input_url'), __('Yes', 'custom_input_url'));
}
約鉤woocommerce_add_cart_item_data文檔不非常有幫助,我堅持這一點。我如何繼續?
也許你可以使用一些jQuery來創建一個產品名稱/字段的數組,然後在提交時發送一個Ajax請求到一個處理/驗證頁面,該頁面爲產品名稱進行表格查找,找到產品id,然後從在那裏您可以使用該ID對產品元字段進行插入,然後使用創建的字段進行插入。只是一個想法,因爲我的答案在你的特定情況下不起作用。 – Ian