如何在结帐页面上隐藏/删除特定产品的其他结帐字段?

时间:2019-10-15 13:47:43

标签: wordpress woocommerce action checkout

我已经在WordPress网站上安装了WooCommerce结帐和帐户字段编辑器插件,用于向结帐页面添加其他字段。安装此插件的目的是向结帐页面添加三个附加字段,例如how_you_heard_about_our_storeuser_membership_leveluser_refferer_name,以便从用户那里获取更多详细信息。

这很好,用户可以在结帐时根据需要提供所需的信息。但是,当此产品在结帐页面上时,有一种产品Gift Certificate需要排除这些其他字段。

目的是仅在此产品上隐藏这些字段。我对该产品有4种不同的变体,我需要为每个变体隐藏这些字段。

我已经尝试了以下技术,但这实际上是针对默认的WooCommerce字段的。

https://www.liquidweb.com/kb/way-conditionally-show-hide-checkout-fields-specific-products-product-categories-store/

此外,我也尝试过以下操作,但没有运气:

    function custom_override_checkout_fields( $fields ) {
    unset($fields['order']["how_heard"]);
    unset($fields['order']["member_level"]);

    return $fields;
}

是否有任何特定操作或过滤器可用于从结帐页面中删除其他字段?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

add_filter( 'woocommerce_checkout_fields' , 'hide_checkout_fields' );

function hide_checkout_fields( $fields ) {
  foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $product = $cart_item['data'];
        $id = $product->get_id();
       $products = array(2516, 584, 2454);  // Product Ids

if (in_array($id, $products)) 
  { 
   unset($fields['order']['how_heard']);
   unset($fields['order']['member_level']);
  } 

  }
  return $fields; 
}