在访客的产品自定义输入字段中设置WooCommerce计费邮政编码

大卫·史密斯

我正在尝试添加一个输入字段,以允许客户(来宾)在“添加到购物车”之前在产品页面上输入他们的邮政编码,然后在篮子中设置/预填充邮政编码并结帐,而无需他们输入详细信息或登录/创建一个帐户。

我已经看到一些资源,说明购物篮页面上的运费计算器很难预填充,但是我不熟悉运费计算器的工作原理。这是真的?

根据Woocommerce答案代码中单个产品页面中的添加产品说明字段,我成功地实现了使用以下代码将邮政编码从产品页面传递到结帐页面的功能,该代码允许访客将其邮政编码添加到产品页面,结帐正确显示了客人的邮政编码,而运费则正确显示了:

// Add a custom product note after add to cart button in single product pages
add_action('woocommerce_after_add_to_cart_button', 'custom_field_delivery_postcode', 10 );
function custom_field_delivery_postcode() {

    woocommerce_form_field('postcode_note', array(
        'type' => 'text',
        'class' => array( 'my-field-class form-row-wide') ,
        'label' => __('Postcode') ,
        'placeholder' => __('Enter your service postcode...') ,
        'required' => true,
    ) , '');
}

// Add customer note to cart item data
add_filter( 'woocommerce_add_cart_item_data', 'add_delivery_postcode_to_cart_item_data', 20, 2 );
function add_delivery_postcode_to_cart_item_data( $cart_item_data, $product_id ){
    if( isset($_POST['postcode_note']) && ! empty($_POST['postcode_note']) ){
        $postcode_note = sanitize_textarea_field( $_POST['postcode_note'] );
        $cart_item_data['postcode_note'] = $postcode_note;
    }
    return $cart_item_data;
}

// If user not logged in, set the guest postcode, otherwise whow saved customer postcode
add_action('woocommerce_after_checkout_form','sab_guest_checkout_postcode');
function sab_guest_checkout_postcode(){

$isLoggedIn = is_user_logged_in();
if(false == $isLoggedIn){
?>
    <script type="text/javascript">
        jQuery(function($){
            $('#billing_postcode').val('<?php
                foreach( WC()->cart->get_cart() as $cart_item ){
                if( isset($cart_item['postcode_note']) )
                echo $cart_item['postcode_note'];
                } ?>'); //enter postcode here
        });
    </script>
<?php 
} 
}

虽然这适用于结帐页面,但是是否有人知道如何使用购物车/购物篮运费计算器实现此功能?

LoicTheAztec

您不需要任何Javascript代码,也不需要将“交货邮政编码”设置为自定义购物车项目数据。只需使用以下简化的代码替换,即可让访客从产品页面设置其“送货邮政编码”:

代码

// Add a custom product note after add to cart button in single product pages
add_action('woocommerce_after_add_to_cart_button', 'add_delivery_postcode_field', 10 );
function add_delivery_postcode_field() {
    if( is_user_logged_in() ) return; // Exit

    $postcode = WC()->customer->get_shipping_postcode();
    $postcode = empty($postcode) ? WC()->customer->get_billing_postcode() : $postcode;

    if ( empty($postcode) ) {
        echo '<div class="postcode-field" style="margin-top:12px;">';

        woocommerce_form_field('delivery_postcode', array(
            'type' => 'text',
            'class' => array( 'my-field-class form-row-wide') ,
            'label' => __('Postcode') ,
            'placeholder' => __('Enter your delivery postcode...') ,
            'required' => true,
        ) , '');

        echo '</div>';
    }
}

// Set submitted postcode
add_action( 'init', 'set_delivery_postcode' );
function set_delivery_postcode() {
    if( isset($_POST['delivery_postcode']) && ! empty($_POST['delivery_postcode']) ) {
        WC()->customer->set_billing_postcode( sanitize_text_field( $_POST['delivery_postcode'] ) );
        WC()->customer->set_shipping_postcode( sanitize_text_field( $_POST['delivery_postcode'] ) );
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

注意:此“送货邮政编码”字段仅显示给访客。一旦“交货邮政编码”被提交一次,该字段将不再显示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在访客的产品自定义输入字段中设置WooCommerce计费邮政编码

来自分类Dev

在WooCommerce中为访客和客户从字段设置邮政编码

来自分类Dev

Woocommerce“没有运输方式”消息:根据客户输入的邮政编码自定义消息

来自分类Dev

从WooCommerce的自定义结帐计费字段中获取价值

来自分类常见问题

在WooCommerce中设置结帐邮政编码字段的最大长度

来自分类Dev

无法在woocommerce中更改“邮政编码/ ZIP”字段标签

来自分类Dev

根据WooCommerce中的自定义字段过滤产品

来自分类Dev

链接产品中的自定义字段 woocommerce

来自分类Dev

WooCommerce更新后,不再包含自定义计费字段

来自分类Dev

添加产品时,如何在woocommerce产品页面中设置必填(必填)自定义字段值

来自分类Dev

隐藏运输方式后,限制自定义运输方式的邮政编码无效

来自分类Dev

自定义比较器可对州,县和邮政编码列表进行排序

来自分类Dev

带有自定义值的预归档结帐邮政编码

来自分类Dev

如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

来自分类Dev

WooCommerce:获取并设置送货和账单地址的邮政编码

来自分类Dev

jQuery .autocomplete()在一个输入字段中包含邮政编码和城市名称

来自分类Dev

如果地址,邮政编码和城市在不同的输入字段中,我该如何定位

来自分类Dev

在WooCommerce中添加购物车之前及早设置运输邮政编码

来自分类Dev

在WooCommerce结帐时预定义的运输邮政编码验证

来自分类Dev

在WooCommerce中从带有链接产品的产品自定义字段获取ID

来自分类Dev

woocommerce中的自定义产品

来自分类Dev

WooCommerce购物车费用根据“自定义产品”输入字段计算

来自分类Dev

在WooCommerce结帐页面中禁用邮政编码验证

来自分类Dev

从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

来自分类Dev

WooCommerce产品类别自定义字段-设置购买时间限制

来自分类Dev

根据WooCommerce产品类型显示或隐藏管理员自定义设置字段

来自分类Dev

自定义产品字段以更改 wordpress 中的产品总价

来自分类Dev

Woocommerce单一产品选项卡中的自定义字段

来自分类Dev

仅在WooCommerce中来自自定义类型的管理产品上添加字段

Related 相关文章

  1. 1

    在访客的产品自定义输入字段中设置WooCommerce计费邮政编码

  2. 2

    在WooCommerce中为访客和客户从字段设置邮政编码

  3. 3

    Woocommerce“没有运输方式”消息:根据客户输入的邮政编码自定义消息

  4. 4

    从WooCommerce的自定义结帐计费字段中获取价值

  5. 5

    在WooCommerce中设置结帐邮政编码字段的最大长度

  6. 6

    无法在woocommerce中更改“邮政编码/ ZIP”字段标签

  7. 7

    根据WooCommerce中的自定义字段过滤产品

  8. 8

    链接产品中的自定义字段 woocommerce

  9. 9

    WooCommerce更新后,不再包含自定义计费字段

  10. 10

    添加产品时,如何在woocommerce产品页面中设置必填(必填)自定义字段值

  11. 11

    隐藏运输方式后,限制自定义运输方式的邮政编码无效

  12. 12

    自定义比较器可对州,县和邮政编码列表进行排序

  13. 13

    带有自定义值的预归档结帐邮政编码

  14. 14

    如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

  15. 15

    WooCommerce:获取并设置送货和账单地址的邮政编码

  16. 16

    jQuery .autocomplete()在一个输入字段中包含邮政编码和城市名称

  17. 17

    如果地址,邮政编码和城市在不同的输入字段中,我该如何定位

  18. 18

    在WooCommerce中添加购物车之前及早设置运输邮政编码

  19. 19

    在WooCommerce结帐时预定义的运输邮政编码验证

  20. 20

    在WooCommerce中从带有链接产品的产品自定义字段获取ID

  21. 21

    woocommerce中的自定义产品

  22. 22

    WooCommerce购物车费用根据“自定义产品”输入字段计算

  23. 23

    在WooCommerce结帐页面中禁用邮政编码验证

  24. 24

    从 Woocommerce 结帐中的自定义产品字段值中填写选择字段选项

  25. 25

    WooCommerce产品类别自定义字段-设置购买时间限制

  26. 26

    根据WooCommerce产品类型显示或隐藏管理员自定义设置字段

  27. 27

    自定义产品字段以更改 wordpress 中的产品总价

  28. 28

    Woocommerce单一产品选项卡中的自定义字段

  29. 29

    仅在WooCommerce中来自自定义类型的管理产品上添加字段

热门标签

归档