197 подписчиков
Небольшой кейс с криво написанным плагином метода доставки через Боксберри.
Один из пользователей плагина AWOOC столкнулся с проблемой критической ошибки при совместной работе плагина AWOOC и плагина для доставки через Боксберри.
Начали разбираться, выяснилось, что в плагине Бексберри, на хуке создания заказа подвешена функция, которая вообще не проверяет, приходят данные или нет, и какие это данные. В итоге, на чекауте это работает, а вот на любой другой странице создание заказа будет фаталить.
Решение. Ничего другого, кроме как отключить с хука и по новой подключить эту функцию не придумал.
Код такой
/**
* Отключение функции
*/
add_action( 'after_setup_theme', function () {
remove_action( 'woocommerce_new_order', 'boxberry_put_choice_code' );
} );
/**
* Новое подключение функции
*/
add_action( 'woocommerce_new_order', function () {
if ( ! is_checkout() ) {
return;
}
$shipping_method = array_shift( $_POST['shipping_method'] );
$shipping_method_name = preg_replace( '/\d+/', '', $shipping_method );
$array = get_user_meta( get_current_user_id(), '_boxberry_array', true );
if ( isset( $_COOKIE['bxb_code'], $_COOKIE['bxb_address'] ) ) {
update_post_meta( $order_id, 'boxberry_code', sanitize_text_field( $_COOKIE['bxb_code'] ) );
update_post_meta( $order_id, 'boxberry_address', sanitize_text_field( $_COOKIE['bxb_address'] ) );
}
update_user_meta( get_current_user_id(), '_boxberry_array', [] );
} );
ПРи повторном подключении добавил проверку на страницу оформления заказа, если это не страница чекаута то ничего не делаем.
Вот как то так... Пишите в коментах, что думаете
На заметку: для Боксберри - это официальный плагин, скачивается с сайта самого Боксберри. Тут вопросы к качеству кода...
27 марта