2017-10-20 48 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

根據你的問題,這是最合適的答案。請將其標記爲答案。如果您有任何其他疑問,可以在此處詢問。 –