WooCommerce:在购物车页面更改默认国家/地区

时间:2013-01-14 作者:ivavid

我想更改cart 页面设置为“无”,即“选择国家…”在国家下拉列表中显示为默认值。

我已经看过了this WooCommerce Docs snippet 使用default_checkout_country filter 但它似乎只适用于checkout 第页(而不是cart 页面),正如标题所示。我还通过围绕apply_filters(\'default_checkout_country\', ... 在显示它们的文件中echo 语句,它们不会出现在为cart

由于我们使用的是PayPal Express结账,所以我们没有使用WooCommerce内置的结账页面,因此上述代码片段似乎不适用,需要另一种解决方案。

我的下一步是调查woocommerce/templates/cart/shipping-calculator.php 其中,在cart 页有人打电话到$woocommerce->customer->get_shipping_country(). 中的功能woocommerce/classes/class-wc-customer.php 只需拿起$_SESSION[\'customer\'][\'shipping_country\'] 变量。设置这些变量的唯一位置是在函数中set_shipping_to_base() 在同一个文件中,唯一(有条件地)调用该函数的位置是woocommerce/shortcodes/shortcode-cart.php 我想这会产生cartshortcode 用于自动生成的cart 页我添加了一个echo 语句到该文件中调用该函数的块,但标记中没有显示任何内容,因此我陷入了困境。

然而,上述调查似乎有点像转移视线,因为上述会话变量似乎实际上是由Base Country/Region 设置,因为当$_SESSION 变量已在浏览器中打印,其中Cookie和缓存先前已被删除。所以我也被困在这里了。我想要Base Country/Region 设置为保留国家设置,但仍然没有默认国家,除非访问者实际选择了它。

有什么想法吗?

2 个回复
SO网友:Evgalak

我也有同样的问题,但需要把国家交给我们,下面是我如何解决的:

add_action(\'woocommerce_add_to_cart\' , \'set_country_befor_cart_page\'); 

function set_country_befor_cart_page(){

    WC()->customer->set_billing_country(\'US\');
    WC()->customer->set_shipping_country(\'US\');
}
希望这会有所帮助。

SO网友:mroncetwice

我偶然想到了这个:

add_filter( \'woocommerce_checkout_fields\' , \'default_country_fields\' );

function default_country_fields( $fields ) {

 $_SESSION[\'customer\'][\'country\'] = \'Select a country...\';
 $_SESSION[\'customer\'][\'shipping_country\'] = \'Select a country...\';

 return $fields;
}
如您所见,我只是根据需要设置$\\u会话变量。我在这方面有点像n00b,所以我还不知道这种方法是否有任何负面影响。可能有一个更合适的钩子或过滤器,但我使用的是从这里得到的:

tutorial-customising-checkout-fields-using-actions-and-filters

如果您未登录或帐户中未设置帐单/发货信息,您将正确看到帐单/发货国家/地区的默认值。但是,当使用设置了帐单或发货信息的用户帐户登录时,此功能将被覆盖,并且所选的默认值将反映您的用户帐户帐单信息。

结束

相关推荐

Google Map在Tab Plugins的第二个选项卡上无法使用

我正在使用postTabs plugin 和Comprehensive Google Map Plugin, 我的问题是,当我在第二个选项卡上有我的谷歌地图时,地图没有按预期加载。但是如果我把它移到第一个标签上,效果会非常好。。有没有办法让地图在第二个选项卡上工作?实际上,无论我使用哪个选项卡插件,地图都不会正确加载到第二个选项卡上。。欢迎提出任何建议。谢谢:)