gpt4 book ai didi

wordpress - WooCommerce:向购物车中的每个项目添加输入字段

转载 作者:行者123 更新时间:2023-12-02 20:24:10 26 4
gpt4 key购买 nike

我一直在尝试向购物车中的每个项目添加一个文本输入字段,并将用户输入提交到产品的元信息。已经两天了,还没成功。

我的目标是:

  1. 针对添加到购物车的每件商品获取用户的输入。
  2. 在订单元信息中显示该输入。
  3. 在发送给客户的确认电子邮件中显示该输入。

到目前为止,我已将模板文件复制到我的主题中,并在单元格内添加了一个输入字段。我在使用钩子(Hook)时遇到了麻烦,从 WooCommerce Product Gift Wrap 了解了我需要的钩子(Hook)插件如本woocommerce issue所示.

我添加到在我的主题目录中复制的 cart.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 );

我添加到主题的functions.php中的代码:

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' ) );
}

关于钩子(Hook) woocommerce_add_cart_item_data 的文档不是很有帮助,我陷入了困境。我该如何继续?

最佳答案

有一个名为 WC Fields Factory 的 WordPress 插件为了确切的目的。

您还可以通过使用以下 woocommerce Hook woocommerce_before_add_to_cart_button 来实现此目的, woocommerce_add_to_cart , woocommerce_cart_item_name ,和'woocommerce_add_order_item_meta'

类似于向产品页面添加文本字段

function add_name_on_tshirt_field() {
echo '<table class="variations" cellspacing="0">
<tbody>
<tr>
<td class="label"><label for="color">Name On T-Shirt</label></td>
<td class="value">
<input type="text" name="name-on-tshirt" value="" />
</td>
</tr>
</tbody>
</table>';
}
add_action( 'woocommerce_before_add_to_cart_button', 'add_name_on_tshirt_field' );

要在购物车项目表上显示自定义字段,请使用以下内容

function render_meta_on_cart_item( $title = null, $cart_item = null, $cart_item_key = null ) {
if( $cart_item_key && is_cart() ) {
echo $title. '<dl class="">
<dt class="">Name On T-Shirt : </dt>
<dd class=""><p>'. WC()->session->get( $cart_item_key.'_name_on_tshirt') .'</p></dd>
</dl>';
}else {
echo $title;
}
}
add_filter( 'woocommerce_cart_item_name', 'render_meta_on_cart_item', 1, 3 );

要在订单详细信息上创建自定义元数据,请执行以下操作

function tshirt_order_meta_handler( $item_id, $values, $cart_item_key ) {
wc_add_order_item_meta( $item_id, "name_on_tshirt", WC()->session->get( $cart_item_key.'_name_on_tshirt') );
}
add_action( 'woocommerce_add_order_item_meta', 'tshirt_order_meta_handler', 1, 3 );

对于详细的实现,我有一篇关于如何在不使用任何插件的情况下执行此操作的文章。 http://sarkware.com/how-to-pass-custom-data-to-cart-line-item-in-woocommerce-without-using-plugins/

关于wordpress - WooCommerce:向购物车中的每个项目添加输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com