如果用户来自wordpress网站上的给定页面,则隐藏woocmerce支付网关



我试图为数字产品隐藏贝宝支付网关。出于某种复杂的原因,我不得不隐藏支付网关,这并不完全是为了产品,而是如果用户从另一个页面(引用页面(进行结账。这是我试图组合的代码,但它并没有隐藏网关。任何协助都将表示感谢。

//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;
}

最新更新