【问题标题】:Remove "add to cart button" from loop (Wordpress Theme: Avada)从循环中删除“添加到购物车按钮”(Wordpress 主题:Avada)
【发布时间】:2018-07-04 13:47:55
【问题描述】:

我想在除单篇文章之外的所有地方删除“添加到购物车按钮”。

我已经尝试过这个解决方案:

Hide 'add to cart' button ONLY on woocommerce shop/category pages

但它对我不起作用。我猜这是因为我使用的模板:Avada。看起来模板使用的钩子与普通的 woocommerce 钩子不同。使用我在文件中找到的钩子名称,我已经尝试过:

add_action( 'woocommerce_after_shop_loop_item', 'remove_add_to_cart_buttons', 1 );

 function remove_add_to_cart_buttons() {
     remove_action( 'avada_woocommerce_buttons_on_rollover', 'avada_woocommerce_template_loop_add_to_cart',10 );
 }

它什么也没做。有人知道我需要做什么吗?

编辑: 有一个文件 class-avada-woocommerce.php 包含这些行

add_action( 'avada_woocommerce_buttons_on_rollover', array( $this, 'template_loop_add_to_cart' ), 10 );
...
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

如果我在父主题文件中删除这两个文件的第一行,添加到购物车按钮就会消失。所以我知道这是我需要删除的挂钩操作,但我无法删除它。

因此我也尝试了每一行:

remove_action( 'avada_woocommerce_buttons_on_rollover', 'avada_woocommerce_template_loop_add_to_cart',10 );

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');

remove_action( 'avada_woocommerce_buttons_on_rollover', array( $this, 'template_loop_add_to_cart' ), 10 );

remove_action( 'avada_woocommerce_buttons_on_rollover', 'template_loop_add_to_cart' , 10 );

【问题讨论】:

    标签: wordpress woocommerce hook


    【解决方案1】:

    我也遇到了这个问题,因为remove_action 对我不起作用。只有通过浏览 woocommerce 模板的代码,我才发现他们使用过滤器来调用此按钮。所以试试这个代码:

    add_filter( 'woocommerce_loop_add_to_cart_link', 'hide_add_to_cart_link', 10, 2 );
    function hide_add_to_cart_link( $html, $product ) {
        if ( !is_user_logged_in() ) { 
            $html = '';
        }
        return $html;
    }
    

    根据您的需要对其进行修改。我也使用 Avada,它对我有用!

    【讨论】:

      【解决方案2】:

      只需将下面的代码添加到functions.php中

      remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
      

      然后告诉我结果。 谢谢

      【讨论】:

      • 感谢您的回复。我试过了,但它并没有改变任何东西。原因可能是存在一个名为 class-avada-woocommerce.php 的文件,其中包含以下几行:add_action( 'avada_woocommerce_buttons_on_rollover', array( $this, 'template_loop_add_to_cart' ), 10 ); ... remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
      【解决方案3】:

      需要覆盖 Avada Woocommerce 挂钩。将此代码添加到functions.php

      function remove_woo_commerce_hooks() {
          global $avada_woocommerce;
          remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 );
      }
      add_action( 'after_setup_theme', 'remove_woo_commerce_hooks' );
      

      【讨论】:

      • 不是第一个答案,只是完整和正确,谢谢:)
      【解决方案4】:

      请使用以下代码从商店页面中删除 add to cart 按钮,因为您缺少 $avada_woocommerce 这是用于 avada woocommerce 的变量。

      remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'show_details_button' ), 15 );
      

      【讨论】:

      • 感谢您的回复。但它对我不起作用。我也将此行改编为remove_action( 'avada_woocommerce_buttons_on_rollover', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 );,但仍然没有运气。
      猜你喜欢
      • 2021-08-30
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多