代码之家  ›  专栏  ›  技术社区  ›  Akash Agrawal

隐藏“添加到购物车”按钮,并在Woocommerce中添加自定义内容

  •  1
  • Akash Agrawal  · 技术社区  · 7 年前

    我在“添加到购物车”按钮后添加了一个“立即自定义”按钮和一些下拉列表,使用 woocommerce_after_add_to_cart_button .

    但现在,当我试图隐藏“添加到购物车”按钮时(我必须根据我的网站需要的特定场景使用该按钮) woocommerce_is_purchasable ,还隐藏了“立即自定义”按钮和下拉列表。是否有适当的顺序/顺序来执行此操作?

    筛选以添加自定义按钮和下拉列表:

    add_action('woocommerce_after_add_to_cart_button', array($this, 'pn_get_calc_and_customize_btn'));
    

    筛选以删除“添加到购物车”按钮:

    add_filter('woocommerce_is_purchasable', array($this, 'pn_hide_add_to_cart_button'), 10, 2);
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   LoicTheAztec    7 年前

    添加到购物车模板时,显示条件为:

    if ( ! $product->is_purchasable() ) {
        return;
    }
    

    2种方式:

    1) 改用 woocommerce_single_product_summary 用钩子钩住 优先级介于 30 40 :

    add_action('woocommerce_single_product_summary', array($this, 'pn_get_calc_and_customize_btn'), 35 );
    

    然后,您的函数输出代码应该嵌入到自定义 <form> 您需要添加更多的代码来将数据保存在购物车或其他地方


    2) 要删除购物车按钮,请使用 woocommerce_product_is_in_stock 过滤器挂钩代替 woocommerce_is_purchasable 因此,您还必须更改一点挂钩函数代码。。。

    add_filter('woocommerce_product_is_in_stock', array($this, 'pn_hide_add_to_cart_button'), 10, 2);
    
        2
  •  1
  •   Nick    7 年前

    我有两个建议:

    第一个是尝试将优先级添加到 add_action() 也根据文件,数字越低,执行越早。我会尽量给 add\u action() 并试图迫使 woocommerce_after_add_to_cart_button 在筛选后执行。然而,我不知道移除按钮是否也会禁用过滤器(可能是)。

    我的另一个建议是覆盖页面的默认模板(我不知道您是在编辑shop页面还是single\u product页面),并使用一些 if{}else{} 登录后根据情况显示隐藏按钮。

    我不知道这些解决方案是否对你有任何好处,但这只是我的难题,我将如何应对。

    希望能有所帮助