【发布时间】:2020-06-25 11:54:20
【问题描述】:
我在 WooCommerce 上创建了此代码,以针对两种不同的运输方式(request_shipping_quote 和 flat_rate)禁用多个支付网关(cardgatecreditcard、cardgategiropay、cardgateideal 和 cardgatesofortbanking)。但是如何简化呢?
// Disable Payment Gateway For Specific Shipping Method
add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_gateway_disable_shipping_326' );
function bbloomer_gateway_disable_shipping_326( $available_gateways ) {
if ( ! is_admin() ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ( isset( $available_gateways['cardgatecreditcard'] ) && 0 === strpos( $chosen_shipping, 'flat_rate' ) ) {
unset( $available_gateways['cardgatecreditcard'] );
}
if ( isset( $available_gateways['cardgategiropay'] ) && 0 === strpos( $chosen_shipping, 'flat_rate' ) ) {
unset( $available_gateways['cardgategiropay'] );
}
if ( isset( $available_gateways['cardgateideal'] ) && 0 === strpos( $chosen_shipping, 'flat_rate' ) ) {
unset( $available_gateways['cardgateideal'] );
}
if ( isset( $available_gateways['cardgatesofortbanking'] ) && 0 === strpos( $chosen_shipping, 'flat_rate' ) ) {
unset( $available_gateways['cardgatesofortbanking'] );
}
if ( isset( $available_gateways['cardgatecreditcard'] ) && 0 === strpos( $chosen_shipping, 'request_shipping_quote' ) ) {
unset( $available_gateways['cardgatecreditcard'] );
}
if ( isset( $available_gateways['cardgategiropay'] ) && 0 === strpos( $chosen_shipping, 'request_shipping_quote' ) ) {
unset( $available_gateways['cardgategiropay'] );
}
if ( isset( $available_gateways['cardgateideal'] ) && 0 === strpos( $chosen_shipping, 'request_shipping_quote' ) ) {
unset( $available_gateways['cardgateideal'] );
}
if ( isset( $available_gateways['cardgatesofortbanking'] ) && 0 === strpos( $chosen_shipping, 'request_shipping_quote' ) ) {
unset( $available_gateways['cardgatesofortbanking'] );
}
}
return $available_gateways;
}
【问题讨论】:
标签: php wordpress woocommerce