Описание woocommerce_pre_payment_complete
— Action
Хук woocommerce_pre_payment_complete позволяет выполнить действия перед завершением оплаты заказа в WooCommerce. Он срабатывает на этапе, когда платежная информация уже введена, но еще не завершена обработка оплаты, что позволяет внедрять дополнительные проверки или изменять данные перед финальным подтверждением
Примеры использования
Пример проверки наличия товара на складе перед завершением оплаты:
add_action('woocommerce_pre_payment_complete', function($order) {
foreach ($order->get_items() as $item_id => $item) {
$product_id = $item->get_product_id();
$product = wc_get_product($product_id);
if (!$product->is_in_stock()) {
// Отменяем заказ и добавляем сообщение об ошибке
$order->update_status('cancelled', 'Заказ отменен: Товар отсутствует на складе');
}
}
});
В этом примере проверяется наличие товаров на складе. Если товар отсутствует, заказ отменяется с соответствующим сообщением.
Пример добавления пользовательского поля к заказу перед завершением оплаты:
add_action('woocommerce_pre_payment_complete', function($order) {
$order->update_meta_data('custom_field', 'значение');
$order->save();
});
Здесь мы добавляем пользовательское поле к заказу перед его завершением
Пример отправки уведомления администратору перед завершением оплаты:
add_action('woocommerce_pre_payment_complete', function($order) {
$to = get_option('admin_email');
$subject = 'Новый заказ ожидает оплаты';
$message = 'Заказ #' . $order->get_id() . ' ожидает завершения оплаты.';
wp_mail($to, $subject, $message);
});
В этом примере отправляется уведомление администратору о новом заказе, ожидающем оплаты
— Лучшие практики
– Использование
Используйте этот хук для выполнения действий, которые должны произойти до завершения оплаты, такие как проверки, уведомления или обновление данных заказа
– Производительность
Так как хук выполняется перед завершением оплаты, он может повлиять на время обработки, поэтому избегайте длительных операций
– Предупреждения
Убедитесь, что любые изменения, которые вы вносите, не нарушают процесс завершения оплаты и не создают негативный опыт для пользователя
Альтернативы
Тип: action
Этот хук срабатывает после завершения оплаты и может использоваться для выполнения действий, связанных с уже завершенным процессом
Используйте его, если вам нужно выполнить действия после успешной оплаты, такие как отправка уведомлений клиенту
Тип: action
Этот хук срабатывает при изменении статуса заказа на ‘ожидает’, что позволяет выполнять действия сразу после создания заказа
Используйте его, если вам необходимо выполнять действия сразу после создания заказа, например, отправка уведомлений