2014-02-17 56 views
3

我使用Woocommerce中的add to cart消息鉤來編輯文本並從某些按鈕中刪除某些類。看起來這個鉤子現在已經在Woocommerce 2.1中被棄用了,我找不到替代品。Woocommerce中wc_add_to_cart_message鉤子的替代WP

我想從「繼續購物」按鈕中刪除「按鈕」類。這個類在Woocommerce內核中定義,我希望未經編輯,以便將來進行正確更新。

我想編輯位於woocommerce /線路包括/ WC-車-的functions.php線94

$message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', $return_to, __('Continue Shopping', 'woocommerce'), $added_text); 

沒有人找到這個鉤子又一個適當的選擇嗎?提前致謝!

回答

7

這爲我工作

add_filter('wc_add_to_cart_message', 'custom_add_to_cart_message'); 
function custom_add_to_cart_message() { 
    global $woocommerce; 

     $return_to = get_permalink(woocommerce_get_page_id('shop')); 
     $message = sprintf('<a href="%s" class="button wc-forwards">%s</a> %s', $return_to, __('Continue Shopping', 'woocommerce'), __('Product successfully added to your cart.', 'woocommerce')); 
    return $message; 
} 

編輯:謝謝你的校正Kaarel卡斯帕

+0

感謝這個優秀的答案:-) – michaelmcgurk

0

這可能是一個解決方案。

過濾器名已與2.1版本改爲「wc_add_to_cart_message」

add_filter('wc_add_to_cart_message', 'foo'); 
function foo() { 

$product_id = $_REQUEST[ 'product_id' ]; 

if (is_array($product_id)) { 

    $titles = array(); 

    foreach ($product_id as $id) { 
     $titles[] = get_the_title($id); 
    } 

    $added_text = sprintf(__('Added &quot;%s&quot; to your cart.', 'woocommerce'), join(__('&quot; and &quot;', 'woocommerce'), array_filter(array_merge(array(join('&quot;, &quot;', array_slice($titles, 0, -1))), array_slice($titles, -1))))); 

} else { 
    $added_text = sprintf(__('&quot;%s&quot; was successfully added to your cart.', 'woocommerce'), get_the_title($product_id)); 
} 

// Output success messages 
if (get_option('woocommerce_cart_redirect_after_add') == 'yes') : 

    $return_to = apply_filters('woocommerce_continue_shopping_redirect', wp_get_referer() ? wp_get_referer() : home_url()); 

    $message = sprintf(
     '<a href="%s" class="alert-link">%s &rarr;</a> %s', 
     $return_to, __('Continue Shopping', 'woocommerce'), 
     $added_text 
    ); 

else : 

    $message = sprintf(
     '<a href="%s" class="alert-link">%s &rarr;</a> %s', 
     get_permalink(wc_get_page_id('cart')), 
     __('View Cart', 'woocommerce'), 
     $added_text); 

endif; 

return $message; 
} 

希望它能幫助:如果你有更好的方法或想法,請更換。 歡呼

+1

wc_add_to_cart_message有2個參數:消息和PRODUCT_ID。據此,最好將'add_filter'語句更改爲'add_filter('wc_add_to_cart_message','foo',10,2);',將'foo'函數的簽名更改爲'function foo($ message,$ product_id) '並刪除字符串'$ product_id = $ _REQUEST ['product_id'];'。 – rpeshkov

3

Woocommerce 2.3及更高版本,

add_filter('wc_add_to_cart_message', 'custom_add_to_cart_message'); 
    function custom_add_to_cart_message($message ){ 
    global $woocommerce; 

    $added_text = __('Product was successfully added to your Network Kit.', 'woocommerce'); 
    // Output success messages 
    if (get_option('woocommerce_cart_redirect_after_add') == 'yes') : 

     $return_to = apply_filters('woocommerce_continue_shopping_redirect', wp_get_referer() ? wp_get_referer() : home_url()); 

     $message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', $return_to, __('Continue Shopping', 'woocommerce'), $added_text); 

    else : 

     $message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', wc_get_page_permalink('cart'), __('View your Network Kit', 'woocommerce'), $added_text); 

    endif; 

    return $message; 
}