2017-10-20 47 views
0

我想要移除Shop Archive页面上的默认/?add-to-cart =动画按钮。单击该按钮之后,简单产品上的默认模式会显示一个微调,然后显示勾号并提供“查看购物车”选项链接。 (请看这里:https://snag.gy/ZreQid.jpg在Woocommerce中禁用按钮上的默认/?add-to-cart =动画

我想简单的产品添加到购物车按钮重定向到产品页面,就像变量产品一样。 (即,我希望客户在点击按钮后查看产品页面,然后通过Woocommerce插件的Booster将“添加到购物车”标签更改为“查看产品”)。

所以,我发现这个thread此代码:

/*STEP 1 - REMOVE ADD TO CART BUTTON ON PRODUCT ARCHIVE (SHOP) */ 

function remove_loop_button(){ 
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10); 
} 
add_action('init','remove_loop_button'); 

/*STEP 2 -ADD NEW BUTTON THAT LINKS TO PRODUCT PAGE FOR EACH PRODUCT */ 

add_action('woocommerce_after_shop_loop_item','replace_add_to_cart'); 
function replace_add_to_cart() { 
global $product; 
$link = $product->get_permalink(); 
echo do_shortcode('<br>[button link="' . esc_attr($link) . '"]VIEW PRODUCT[/button]'); 
} 

的第一步作品一贯良好。第二步在某些时候起作用。例如,在一个网站上,步骤2是一种魅力。在第二个网站(主题相同,主机相同等)上,按钮显示如下:

[button link =“https://example.com/product/product-name/ “]查看产品[/ button]

即按钮不显示;这个原始代码被显示出来并且不可点击。看到这里:https://snag.gy/FxEPWh.jpg

我希望我已经解释得很好。

任何人都可以帮助解释为什么上面的代码不能一致地跨不同的网站工作吗?有没有更简单的方法来做到这一点?

回答

0

下面是解

add_filter('woocommerce_loop_add_to_cart_link','change_simple_shop_add_to_cart',10,2); 
function change_simple_shop_add_to_cart($html, $product){ 
    if($product->is_type('simple')) { 

     $html = sprintf('<a rel="nofollow" href="%s" data-product_id="%s" class="button">%s</a>', 
       esc_url(get_the_permalink()), 
       esc_attr($product->get_id()), 
       esc_html( __('View Product', 'woocommerce')) 
     ); 
    } 
    return $html; 
} 
+0

谢谢你,洛根。这对我的大多数产品都很有效,它是一个更好的解决方案。不过,我也有“简单”的订阅产品(Woocommerce Extension),但该解决方案并未影响他们。你知道我必须添加到产品类型行吗? – CraigK

+0

如果你知道它的产品类型,那么你可以使用$ product-> is_type('simple')在&&操作符后附加检查。例如,为了增加对变量产品的检查,你可以试试这个($ product-> is_type('simple')&& $ product-> is_type('variable')) –

+0

根据你的问题,这是最合适的答案。请将其标记为答案。如果您有任何其他疑问,可以在此处询问。 –