为了账号安全,请及时绑定邮箱和手机立即绑定

删除 WooCommerce Checkout 中一些基于虚拟产品的挂钩功能

删除 WooCommerce Checkout 中一些基于虚拟产品的挂钩功能

PHP
皈依舞 2023-09-08 14:01:19
当购物车中只有虚拟产品时,我想删除结账页面上的一些信息。以下是删除我想要在结帐页面上显示的内容:  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 );  remove_action( 'woocommerce_checkout_terms_and_conditions', 'woocontracts_terms_fields', );  remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );  remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );  remove_action( 'woocommerce_checkout_after_terms_and_conditions', 'woocontracts_checkout_additional_checkboxes', 10 );  remove_action( 'woocommerce_checkout_process', 'woocontracts_checkout_field_process', 10 );当购物车中只有虚拟产品时如何制作相同的产品?我尝试了以下方法:add_filter( 'woocommerce_checkout_after_terms_and_conditions' , 'bbloomer_simplify_checkout_virtualab' ); function bbloomer_simplify_checkout_virtualab( $fields ) {       $only_virtual = true;       foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {      // Check if there are non-virtual products      if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false;      }         if( $only_virtual ) {                  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 );  remove_action( 'woocommerce_checkout_terms_and_conditions', 'woocontracts_terms_fields', );  remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );  remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );        return $fields;}          return $fields;}但这不起作用。有什么建议么?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

更新 2 - 在这种情况下使用的正确钩子是woocommerce_checkout_init操作钩子:


// Custom conditional function that checks if there is only virtual items in cart

function has_only_virtual_items_in_cart(){

    $only_virtual = true;


    // Check if there are non-virtual items in cart

    foreach( WC()->cart->get_cart() as $cart_item ) {

        if ( ! $cart_item['data']->is_virtual() ) {

            $only_virtual = false;

            break;

        }

    }

    return $only_virtual;

}


// Unhook some functions conditionally

add_action( 'woocommerce_checkout_init', 'simplify_checkout_for_virtual_items_only' );

function simplify_checkout_for_virtual_items_only() {

    if( has_only_virtual_items_in_cart() ) {

        remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );

        remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );

        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 );

        remove_action( 'woocommerce_checkout_terms_and_conditions', 'woocontracts_terms_fields' ); // <== missing priority

        remove_action( 'woocommerce_checkout_after_terms_and_conditions', 'woocontracts_checkout_additional_checkboxes', 10 );

    }

}

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。


然后,您可以在挂钩中的函数has_only_virtual_items_in_cart()内重用自定义条件函数。woocontracts_checkout_field_process()woocommerce_checkout_process


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信