隐藏电子商务支付方式功能禁用WordPress nav-menus.php

隐藏电子商务支付方式功能禁用WordPress nav-menus.php,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我已经隐藏了其他付款方式,如果选择了COD方式(在我的情况下是固定费率:5)。我正在使用我做了一些小修改的答案 代码完全按照它应该的方式工作,但是,我不能在“外观->菜单”屏幕中编辑菜单。前端似乎没有问题 function payment_gateways_based_on_chosen_shipping_method( $gateways ) { // Get chosen shipping methods $chosen_shipping_methods = (array) WC()->

我已经隐藏了其他付款方式,如果选择了COD方式(在我的情况下是固定费率:5)。我正在使用我做了一些小修改的答案

代码完全按照它应该的方式工作,但是,我不能在“外观->菜单”屏幕中编辑菜单。前端似乎没有问题

function payment_gateways_based_on_chosen_shipping_method( $gateways ) {
// Get chosen shipping methods
$chosen_shipping_methods = (array) WC()->session->get( 'chosen_shipping_methods' );

if ( in_array( 'flat_rate:5', $chosen_shipping_methods ) )
{
    unset( $gateways['bacs'] );
    unset( $gateways['iyzico'] );
}

return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method' );
我完全搞不懂bug在哪里,为什么它只出现在“外观->菜单”页面上

同样来自WordPress支持论坛的用户也遇到了类似的问题,不同的代码在同一个过滤器中(woocommerce\u available\u payment\u gateways)

谢谢。

这是因为WC()->会话在后台是空的。所以不能调用方法“get”

在执行代码之前,您需要检查您是否在管理区:

功能支付\u网关\u基于\u选择的\u运输\u方法($gateways){
if(is_admin()){
返回$gateways;
}
//选择合适的运输方式
$selected_shipping_methods=(array)WC()->session->get('selected_shipping_methods');
if(在数组中('flat_rate:5',$selected_shipping_methods)){
未设置($gateways['bacs']);
unset($gateways['iyzico']);
}
返回$gateways;
}
添加过滤器(“woocommerce\u available\u payment\u gateways”、“payment\u gateways\u based\u on\u Selected\u shipping\u method”);

我已经更新了我的答案代码…下面@ZecKa的答案是正确的,你应该接受它。谢谢好答案+1…我已经更新了原始答案线程。