我试图为数字产品隐藏贝宝支付网关。出于某种复杂的原因,我不得不隐藏支付网关,这并不完全是为了产品,而是如果用户从另一个页面(引用页面(进行结账。这是我试图组合的代码,但它并没有隐藏网关。任何协助都将表示感谢。
//hide paypal if user access checkout from "send money" page
add_filter( 'woocommerce_available_payment_gateways', 'dealion_payment_gateway_disable_onpage' );
function dealion_payment_gateway_disable_onpage( $available_gateways ) {
$referer=wp_get_referer();
var_dump($referer);
if ( isset( $available_gateways['paypal'] ) && $referer== "https://www.myshop.store/send-money/") {
unset( $available_gateways['paypal'] );
}
return $available_gateways;
}
您可以尝试使用WC()->session
并存储一个自定义变量,这样它就不会清除您的引用者。
add_filter( 'woocommerce_available_payment_gateways', 'dealion_payment_gateway_disable_onpage' );
function dealion_payment_gateway_disable_onpage( $available_gateways ) {
// Don't check gateways on Admin.
if ( is_admin() ) {
return $available_gateways;
}
if ( null === WC()->session->get( 'dealion_referer' ) ) {
// Get the Referer and Store in a WC Session Var.
$referer = wp_get_referer();
WC()->session->set( 'dealion_referer', $referer );
} else {
$referer = WC()->session->get( 'dealion_referer' );
}
if ( isset( $available_gateways['paypal'] ) && 'https://www.myshop.store/send-money/' === $referer ) {
unset( $available_gateways['paypal'] );
}
return $available_gateways;
}