Я пытаюсь отобразить использованные купоны в электронных письмах с заказами WooCommerce + добавить конкретные сообщения на основе использованных купонов.
Отображение купонов работает на основе
Я пытаюсь расширить его, проверяя, содержит ли строка $coupon_codes
определенные слова/конкретные купоны, в данном случае "grouppurchase", а затем отображая сообщение.
Он должен быть для $coupon_codes
, так как он может (и будет) использоваться с несколькими купонами.
Мне удалось заставить его работать со следующим кодом
Как проверить, содержит ли строка определенное слово?
Проблема в том, что (strpos) выводит сообщение всякий раз, когда используется ЛЮБОЙ купон, не важно, что написано в купоне, и я не могу понять, почему
Я следую логике strpos, стоящей за этим ответом
// Display used Coupons on Emails and Add GroupPurchase Warning
add_action( 'woocommerce_email_after_order_table', 'display_applied_coupons', 10, 4 );
function display_applied_coupons( $order, $sent_to_admin, $plain_text, $email ) {
// Only for admins and when there at least 1 coupon in the order
if ( ! $sent_to_admin && count($order->get_items('coupon') ) == 0 ) return;
foreach( $order->get_items('coupon') as $coupon ){
$coupon_codes[] = $coupon->get_code();
}
// For one coupon
if( count($coupon_codes) == 1 ){
$coupon_code = reset($coupon_codes);
echo '<p>'.__( 'Used Coupon: ').$coupon_code.'<p>';
}
// For multiple coupons
else {
$coupon_codes = implode( ', ', $coupon_codes);
echo '<p>'.__( 'Used Coupons: ').$coupon_codes.'<p>';
}
if (strpos($coupon_codes, 'groupurchase') !== false) {
echo '<p>' . 'With this coupon you are participating in a group purchase' . '<p>' ;
}
}