Eag*_*ncy 3 php wordpress woocommerce
我在我们的 WP/WC 网站上收到以下错误。这会根据运输方式从结帐中删除某些付款方式。这与最近的更新有关吗?我还发现这可能与对象缓存有关,但在没有重写该函数的情况下我有点困惑。
错误:
An error of type E_ERROR was caused in line 746 of the file /xxx/wp-content/themes/xxx/functions.php. Error message: Uncaught Error: Call to a member function get() on null in /xxx/wp-content/themes/xxx/functions.php:746
Run Code Online (Sandbox Code Playgroud)
正在使用的代码:
function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods', array() );
if ( in_array( 'betrs_shipping:252-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:131-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:132-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:133-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:134-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:135-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:150-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:136-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:207-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:137-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:208-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:138-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:215-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:139-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:219-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );
Run Code Online (Sandbox Code Playgroud)
并对代码进行空检查,以防止在会话为空时调用函数:
add_filter( 'woocommerce_available_payment_gateways', 'filter_woocommerce_available_payment_gateways' );
function filter_woocommerce_available_payment_gateways( $gateways ) {
$session = WC()->session;
if ( $session ) {
$chosen_shipping_rates = $session->get( 'chosen_shipping_methods', [] );
if ( in_array( 'betrs_shipping:252-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:131-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:132-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:133-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:134-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:135-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:150-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:136-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:207-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:137-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:208-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:138-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:215-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:139-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
elseif ( in_array( 'betrs_shipping:219-1', $chosen_shipping_rates ) ) :
// Remove bank transfer payment gateway
unset( $gateways['sagepayform'] );
endif;
}
return $gateways;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |