#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
}
некоторые хосты не поддерживают []
создание массива.