【问题标题】:WooCommerce: How to set a default table-rate shipping method?WooCommerce:如何设置默认的表费率运输方式?
【发布时间】:2016-03-30 00:33:22
【问题描述】:

我定义了 2 种送货方式:

  1. 餐桌费率 - 优先级 1
  2. 本地取货 - 优先级 2

在表率中,我有 3 个选项:

  1. 澳大利亚挂号邮政(2 到 8 个工作日):6.50 美元
  2. 跟踪和货运保险:7.25 美元
  3. 全国交付(5 到 12 个工作日):1.40 美元

本地表价格区域内的所有订单都显示了这 3 个选项,默认情况下,选项 3 被选中(我假设它是最便宜的)

它默认优先级为餐桌费率,但您不能在实际餐桌费率中定义优先级。我希望默认选项为选项 1:挂号澳大利亚邮政(2 到 8 个工作日)

我发现这里设置了默认的送货方式:

WC()->session->[chosen_shipping_methods] => a:1:{i:0;s:17:"table_rate-5 : 70";}

显然可以使用以下两种方法访问和修改:

WC()->session->get('chosen_shipping_methods');
WC()->session->set('chosen_shipping_methods', $chosen_method);

但是,我可以得到当前的chosen_shipping_methods 我只是无法设置一个新的。

我正在尝试使用操作 woocommerce_shipping_method_chosen 设置它,但它不起作用

谁能指导我看什么?

【问题讨论】:

标签: php wordpress woocommerce


【解决方案1】:

只看你的网站而不看代码,我猜这可能就是你想要的......

add_action( 'template_redirect', 'reigel_chosen_shipping_methods' );

function reigel_chosen_shipping_methods(){
    remove_action(current_filter(), __FUNCTION__);
    WC()->session->set( 'chosen_shipping_methods', array('table_rate-7 : 72') );
}

【讨论】:

  • 谢谢!在 WooCommerce 3.0.7 中,这是我让它工作的唯一方法。 WooCommerce 似乎忽略了我使用“woocommerce_shipping_chosen_method”过滤器更改默认运输方式的所有尝试。可能是由于我的代码中有其他冲突的东西。我添加了另一个会话变量来检查会话中的运输方式是否已经更改过一次(以允许客户选择他们喜欢的方式,而不会在每次购物车重新加载时都恢复)。
【解决方案2】:

您可以通过管理仪表板重新排序运输方式。转到 Woocommerce > Shipping > Shipping Methods 并使用拖放更改订单。

【讨论】:

  • 这完全没有影响,因为它是无关的。运输优先权有效 - 这不是问题 - 默认费率选择是问题
  • 餐桌费率?您是在谈论特定的运输插件吗?如果有,是哪一个?你看过他们的文档吗?
  • 这个答案应该是正确的..因为第一种方法总是结帐时的默认选择..
  • 第一个答案不正确。正如答案所描述的那样,WooCommerce 在运输方式上设置了优先级,但它没有对表费率中定义的 3 种运输方式设置第二级优先级。表率有多个选项。 WooCommerce 不允许为这些子选项选择优先级,而是默认为最便宜的选项,
  • @php-b-grader 很抱歉,您应该询问 Table Rates 而不是 WooCommerce。这两者可能是相关的,但是谁知道 Table Rates 是如何实现其运输优先级的......可能对您询问插件作者有好处。
【解决方案3】:

这是我最终使用的,按要求工作:

/*=Use the shipping method filter to set the "selected" shipping method to 
 * the first (default) method in the list
**************************************************************************/
function oley_reset_default_shipping_method( $method, $available_methods ) {

    $method = key($available_methods);
    return $method;

}
add_filter('woocommerce_shipping_chosen_method', 'oley_reset_default_shipping_method', 10, 2);

(注意:这很有效,因为我想要的运费实际上是列表中的第一个,但默认情况下没有被选中)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多