сбой, приводящий к отображению недопустимого аргумента в электронных письмах администратора о продажах

#php #wordpress #implode

#php #wordpress #сбой

Вопрос:

Каждый раз, когда у нас распродажа без использования купона, я получаю сообщение об ошибке в электронном письме с указанием недопустимого аргумента implode ()functions.php

До недавнего времени это не вызывало этой проблемы, затем я перенес веб-сайт с одного хостинга на другой и обновил все плагины.

Подключена функция электронной почты, которая отображает текст

 add_action( 'woocommerce_email_order_details', '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 amp;amp; 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>'.__( 'Coupon Used: ').$coupon_code.'<p>';
    } 
    // For multiple coupons
    else {
        $coupon_codes = implode( ', ', $coupon_codes);
        echo '<p>'.__( 'Coupons Used: ').$coupon_codes.'<p>';
    }
}
  

Если клиент не использует купон, он либо должен быть пустым, либо указывать «Купон не использовался» — я не уверен, почему область с несколькими купонами вызывает раздел, когда они не используют какие-либо купоны.

Вместо того, чтобы это работало, я продолжаю просто получать этот недопустимый аргумент для ошибки implode

Комментарии:

1. Просто объявите $coupon_codes как массив перед циклом foreach, и проблема решена.

Ответ №1:

Попробуйте использовать array_push вместо $coupon_codes[]

 $coupon_codes = array();
foreach( $order->get_items('coupon') as $coupon ){
      //$coupon_codes[] = $coupon->get_code();
      array_push($coupon_codes,$coupon->get_code());//changes
}
  

некоторые хосты не поддерживают [] создание массива.