在 WooCommerce 中有条件地删除结帐条款和条件

Remove Checkout Terms & Conditions conditionally in WooCommerce

如果没有可用的支付网关,我想在结账时删除 Woocommerce 隐私政策文本和条款和条件。

这是我试过的代码

add_action('woocommerce_checkout_terms_and_conditions', 'disable_woocommerce_checkout_options', 10 );
function disable_woocommerce_checkout_options(){
    if ( empty( $available_gateways ) ) {
            remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_checkout_privacy_policy_text', 20 );
            remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_terms_and_conditions_page_content', 30 );
        }
}

这将完全删除隐私政策和条款和条件,即使有可用的支付网关也是如此。

未定义变量 $available_gatewayswoocommerce_checkout_init 是要使用的正确钩子。尝试以下操作:

add_action('woocommerce_checkout_init', 'disable_checkout_terms_and_conditions', 10 );
function disable_checkout_terms_and_conditions(){
    // Get available payment gateways
    $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
    
    if ( empty( $available_gateways ) ) {
        remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_checkout_privacy_policy_text', 20 );
        remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_terms_and_conditions_page_content', 30 );
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。

相关: