Woocommerce:获取发货邮政编码以计算运输成本

问题描述:

我正在开发一种新的运输方法,可根据包裹重量,体积和客户邮政编码计算出运费... 我在检索购物车信息时没有问题calculate_shipping函数,但是当我尝试从客户检索邮政编码时,它似乎返回一个空值。 如何在运行时检索此信息以计算最终成本?Woocommerce:获取发货邮政编码以计算运输成本

public function calculate_shipping($package) { 
    GLOBAL $woocommerce; 
    $items = $woocommerce->cart->get_cart(); 
    $cliente = $woocommerce->customer; 
    $peso = $woocommerce->cart->cart_contents_weight; 
    $customer_postcode = $woocommerce->customer->get_shipping_postcode(); 
} 

解决:

$customer_postcode = get_user_meta(get_current_user_id(), 'shipping_postcode', true);

+2

能否请你告诉我们一些你的代码?你说它返回“一个空值”,我们不能在没有看到代码的情况下修复它。当然 – Drown 2014-11-14 17:48:26

+0

是:
公共职能calculate_shipping($包){
\t \t \t GLOBAL $ woocommerce;
\t \t \t \t \t $ items = $ woocommerce-> cart-> get_cart();
\t \t \t \t \t $ cliente = $ woocommerce-> customer;
\t \t \t \t \t \t \t \t \t $比索= $ woocommerce-> cart-> cart_contents_weight;
\t \t \t \t $ customer_postcode = $ woocommerce-> customer-> get_shipping_postcode();
\t \t \t \t}

的$ customer_postcode = $ woocommerce->客户 - > get_shipping_postcode();是空的,我可以得到这个工作的唯一方法是,如果我去结账页面,并返回到购物车 – olken 2014-11-14 18:14:43

我认为这是在客户类处理

计费邮编

WC()->customer->get_postcode();

航运邮编

WC()->customer->get_shipping_postcode();

+0

我有同样的想法....但它似乎不会加载客户送货数据,直到你到结帐页面...现在基本上现在唯一的办法是我可以得到这个工作是如果我去结帐页面,并返回到购物车 – olken 2014-11-14 18:24:02

global $woocommerce; 
$customer = new WC_customer(); 
$customer_id = $customer->ID 

$get_customer_shipping_pincode = get_user_meta($customer_id,"shipping_postcode",true); 
$get_customer_billing_pincode = get_user_meta($customer_id,"billing_postcode",true); 

如果用户在(对寄存器的用户)登录,

$get_customer_shipping_pincode = get_user_meta(get_current_user_id(),"shipping_postcode",true); 
$get_customer_billing_pincode = get_user_meta(get_current_user_id(),"billing_postcode",true); 

global $woocommerce; 
$customer = new WC_Customer(); 
$woocommerce->customer->get_shipping_postcode(); 
+2

请考虑编辑您的帖子,以添加更多关于你的代码做什么以及为什么它可以解决问题的解释。一个主要包含代码的答案(即使它正在工作)通常不会帮助OP了解他们的问题。 – Miki 2015-09-11 13:06:09

// add this in your calculate_shipping function 
public function calculate_shipping($package) { 
    $postal_code = $package[ 'destination' ][ 'postcode' ]); 
} 
+1

这是正确的答案,get_user_meta(get_current_user_id(),'shipping_postcode',true);其实是一种错误的做法。 – Alice 2017-05-03 10:33:58