2016-06-14 15 views
1

私はWooCommerce通知をカスタマイズしようとしています。この便利な答えWooCommerce Notice Messages, how do I edit them?に基づいて add_filterフックでWooCommerce通知をカスタマイズする

wc_add_notice(sprintf(__('%s has been removed from your cart because it can no longer be purchased. Please contact us if you need assistance.', 'woocommerce'), $_product->get_title()), 'error') 

が、私はこの思い付いた: これは私が交換するためにしようとしているの通知である

function my_woocommerce_membership_notice($error) { 
    if ('%s has been removed from your cart because it can no longer be purchased. Please contact us if you need assistance.' == $error) { 
     $error = '%s has been removed from your cart because you added a membership product. Please complete the membership purchase first.'; 
    } 
    return $error; 
} 

add_filter('woocommerce_add_error', 'my_woocommerce_membership_notice'); 

これはHTTP500エラーになり、私は把握することはできませんなぜ正確に。

ありがとうございます!

答えて

2

インターネットでこの質問についての検索、多くの人が同様のものを使用しようとすると、深刻な同様のエラーの問題を持っていることが表示されます...

このエラーメッセージは、ラインを見てみると238

includes/class-wc-cart.phpに設定されていますincludes/wc-notice-functions.phpのWCバージョン2.6のソースコード、wc_add_notice()は、2つの変数:$message$notice_typeを処理しています。
sprintf(__('%s has been removed from your cart because it can no longer be purchased. Please contact us if you need assistance.', 'woocommerce'), $_product->get_title())
の代わりにのみ::私たちが持っている$メッセージ変数のだからここ


'%s has been removed from your cart because it can no longer be purchased. Please contact us if you need assistance.'

%s$_product->get_title()値に置き換えられるsprintf()によって使用される文字列変数です。しかし、ここでは%sをもう使用できません。
これが原因でエラーが発生する可能性があります。 '%s has been…の代わりに'An item has been…を試してください。

はその後this threadに基づいて、条件内のstrpos() PHP関数を使用して、私はすべての保証がなければ、このスニペットをまとめました:

function my_woocommerce_membership_notice($message) { 
    if (strpos($message,'has been removed from your cart because it can no longer be purchased') !== false) { 
     $message = 'An item has been removed from your cart because you added a membership product. Please complete the membership purchase first.'; 
    } 
    return $message; 
} 
add_filter('woocommerce_add_error', 'my_woocommerce_membership_notice'); 
関連する問題