首页 > 解决方案 > 仅在外部/附属产品页面上隐藏按钮/不在商店中

问题描述

我想隐藏仅适用于 Eternal/Affiliate 且仅在产品页面上的所有按钮

TLDR

在我的网站上,我有一些定价表,客户可以在其中选择合适的定价表,然后将该项目添加到购物车中。

问题是试图制作一个您无法购买但定价表在描述中的空产品。所以我不得不使用 Eternal/Affiliate 产品。由于 URL 是非常适合商店的产品页面本身,因此效果很好。

问题出在产品页面上,您可以看到一个显示添加到购物车的按钮。

我想仅在 Eternal/Affiliate 和产品页面上隐藏此按钮。

你看我下面已经有这段代码了,但显然我不想把它限制在 ID 号和可变产品上。

更新

所以下面的代码可以工作,但如果我在产品页面上放置一个 URL 链接,那么它就不起作用。不幸的是,现在有点难过。

如果我可以删除按钮并将其替换为一些文本,例如请阅读以下内容,那就太好了。

 function woocommerce_add_aff_link(){
  $product = wc_get_product(get_the_ID());
  if ($product->is_type('external'))
    echo '<a href="' .
         $product->get_product_url() .
         '" class="woocommerce-LoopProductImage-link">';
}

更新 +

经过一番挖掘,我发现创建新产品实际上更合乎逻辑,但是下面的解决方案非常有效:

参考:https ://www.businessbloomer.com/woocommerce-how-to-create-a-new-product-type/

标签: woocommerceshop

解决方案


要删除单个外部产品页面上的添加到购物车按钮,请使用以下命令:

add_action( 'woocommerce_single_product_summary', 'remove_external_product_add_to_cart_button', 4 );
function remove_external_product_add_to_cart_button(){
    global $product;
    
    if ( ! is_a($product, 'WC_Product') ) {
        $product = wc_get_product(get_the_ID());
    }

    if ( $product->is_type('external') ) {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    } 
}

代码位于活动子主题(或活动主题)的 functions.php 文件中。T它应该工作。


推荐阅读