亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除 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 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號