在 WooCommerce 中隐藏运输和付款方式

Posted

技术标签:

【中文标题】在 WooCommerce 中隐藏运输和付款方式【英文标题】:Hide shipping and payment methods in WooCommerce 【发布时间】:2018-11-09 08:21:58 【问题描述】:

我正在建立一个 WooCommerce 电子商店,我需要通过执行以下操作来调整我的结帐页面:

    如果订单总额 > 100 欧元,则隐藏某种运输方式(仅一种)。

    如果选择本地取货,则隐藏货到付款付款方式。

有人知道怎么做吗?我有 Code Snippets 插件,因此我可以轻松添加任何自定义代码。

谢谢!

【问题讨论】:

可以使用这个插件elextensions.com/plugin/… 【参考方案1】:

要根据购物车总数隐藏特定的运输方式,您可以使用以下代码 sn-p。您需要在代码中更新您的送货方式名称。

根据购物车总数禁用送货方式

将此 sn-p 添加到您主题的 functions.php 文件或自定义插件文件中。

add_filter( 'woocommerce_package_rates', 'shipping_based_on_price', 10, 2 );

function shipping_based_on_price( $rates, $package ) 

    $total = WC()->cart->cart_contents_total;
    //echo $total;
    if ( $total > 100 ) 

        unset( $rates['local_delivery'] ); // Unset your shipping method

    
    return $rates;


禁用特定送货方式的支付网关

使用下面的代码 sn-p。根据您的付款方式和送货方式更新代码。

add_filter( 'woocommerce_available_payment_gateways', 'x34fg_gateway_disable_shipping' );

function x34fg_gateway_disable_shipping( $available_gateways ) 

    global $woocommerce;

    if ( !is_admin() ) 

        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );

        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) 
            unset( $available_gateways['cod'] );
        

    

return $available_gateways;


【讨论】:

@otpabu,如果答案解决了你的问题,你能接受它作为正确答案吗? 完成!您可能知道我的第二个问题的解决方案吗? ThallerThanYall 提供的答案不起作用。再次感谢您。 @otpabu ,我已经更新了我的答案。你能查一下吗?【参考方案2】:
    有很多插件可以为你做这件事,看看这个WooCommerce Conditional Shipping and Payments 您需要参与“woocommerce_payment_gateways”操作

类似的东西:

function alter_payment_gateways( $gateways )

    $chosen_rates = ( isset( WC()->session ) ) ? WC()->session->get( 'chosen_shipping_methods' ) : array();

    if( in_array( 'local-pickup:6', $chosen_rates ) ) 
        $array_diff = array('cod');
        $list = array_diff( $list, $array_diff );
    

    return $list;


add_action('woocommerce_payment_gateways', 'alter_payment_gateways', 50, 1);

第 4 行“local-pickup”末尾的数字取决于您的 woocommerce 设置。您可以通过在购物篮中添加一些东西、前往结账处、右键单击交付方式中的“本地取货”选项并查看 value 属性来找到需要放入的字符串。

【讨论】:

不幸的是它不起作用。它隐藏了所有的付款方式,而不仅仅是鳕鱼。

以上是关于在 WooCommerce 中隐藏运输和付款方式的主要内容,如果未能解决你的问题,请参考以下文章

根据 Woocommerce 中选择的付款方式禁用运输方式

根据 Woocommerce 中的运输方式和付款方式添加费用

WooCommerce:根据运输方式自动完成已付款订单

在 WooCommerce 中隐藏特定运输方式的结帐运输字段部分

在 Woocommerce 中隐藏特定用户角色的特定运输方式

根据 WooCommerce 结帐字段值显示/隐藏运输方式