gpt4 book ai didi

wordpress - WooCommerce 根据数量添加产品字段

转载 作者:行者123 更新时间:2023-12-05 03:10:49 25 4
gpt4 key购买 nike

美好的一天。

有没有办法根据所选产品的数量动态地向 WooCommerce 中的产品添加输入字段?

我发现了很多解决方案,其中可以有静态字段,但没有一个是自动更新的。例如,如果我在产品页面中有 3 个数量,则为每个产品添加名称、手机号码和电子邮件地址是必填字段。

我见过的选项有:

https://wordpress.org/plugins/woo-checkout-field-editor-pro/

https://wordpress.org/plugins/wc-fields-factory/

最佳答案

假设您的 WooCommerce 商店中有一个预订系统,如果有人预订了多个数量,您希望在结账时获取额外信息。例如,如果您有事件/研讨会网站,并且想要捕获参加您的事件/研讨会的每个人的姓名、电子邮件、电话和地址,并且有人在您的网站上预订了 3 个数量,那么您需要额外的动态自定义字段来捕获详细信息其他 2 名与会者。因此,如果有人将 3 个数量添加到购物车,那么结帐页面会为其他 2 个参与者添加额外的字段,如果将 4 个数量添加到购物车,那么它会为其他 3 个参与者添加字段。

在以下函数中,我们将检查用户购物车中的数量,如果数量超过 1,则将附加字段添加到结帐页面。并保存字段值以在管理中的订单中显示边。

转到您的 functions.php 文件并在文件末尾添加以下代码,或者您可以创建自己的插件来添加此功能。

//Custom WooCommerce Checkout Fields based on Quantity
add_action( 'woocommerce_before_order_notes', 'person_details' );

function person_details($checkout) {
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=2; $k<= $count; $k++) {
$i++;
print ('<h3>Please enter details of attendee '.$i.'</h3>');
woocommerce_form_field( 'cstm_full_name'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Full name'),
'placeholder' => __('Enter full name'),
),
$checkout->get_value( 'cstm_full_name'.$i ));
echo '<div class="clear"></div>';
woocommerce_form_field( 'cstm_phone'.$i, array(
'type' => 'text',
'class' => array('my-field-class form-row-first'),
'label' => __('Phone'),
'placeholder' => __('Enter phone number'),
),
$checkout->get_value( 'cstm_phone'.$i ));
woocommerce_form_field( 'cstm_email'.$i, array(
'type' => 'email',
'class' => array('my-field-class form-row-last'),
'label' => __('Email address'),
'placeholder' => __('Enter email address'),
),
$checkout->get_value( 'cstm_email'.$i ));
echo '<div class="clear"></div>';
woocommerce_form_field( 'cstm_address'.$i, array(
'type' => 'textarea',
'class' => array('my-field-class form-row-wide'),
'label' => __('Full address'),
'placeholder' => __('Enter full address'),
),
$checkout->get_value( 'cstm_address'.$i ));
}
}

/**
* Save value of fields
*/

add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');

function customise_checkout_field_update_order_meta($order_id)
{
global $woocommerce;
$count = $woocommerce->cart->cart_contents_count;
$i = 1;
for($k=2; $k<= $count; $k++) {
$i++;
if (!empty($_POST['cstm_full_name'.$i])) {
update_post_meta($order_id, 'Name of Attendee'.$i, sanitize_text_field($_POST['cstm_full_name'.$i]));
}
if (!empty($_POST['cstm_phone'.$i])) {
update_post_meta($order_id, 'Phone of Attendee'.$i, sanitize_text_field($_POST['cstm_phone'.$i]));
}
if (!empty($_POST['cstm_email'.$i])) {
update_post_meta($order_id, 'Email of Attendee'.$i, sanitize_text_field($_POST['cstm_email'.$i]));
}
if (!empty($_POST['cstm_address'.$i])) {
update_post_meta($order_id, 'Address of Attendee'.$i, sanitize_text_field($_POST['cstm_address'.$i]));
}
}
}

结帐页面上的动态自定义字段 enter image description here

管理员订单页面上的自定义字段值 enter image description here

Reference

关于wordpress - WooCommerce 根据数量添加产品字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654018/

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