Последнее обновлене - 5 сентября 2023 в 23:01
В этой заметке покажу, как реализуется отправка на почту ссылки на скачиваемый товар Woocommerce. То есть, клиент, оплативший в интернет-магазине скачиваемый виртуальный товар, не только увидит ссылку на его загрузку в карточке заказа на сайте, но ещё и получит ответное письмо на свой электронный адрес с информацией о покупке и ссылкой на скачивание файла на свой компьютер.
В плагине Woocommerce такой фунционал по умолчанию я не обнаружил. Плагинов, которые делают такую отправку покупателю, тоже не нашёл. Но такая возможность всё же появляется с применением хука woocommerce_payment_complete.
Сделаем это без применения плагина. Необходимо открыть на редактирование файл functions.php рабочей темы и дополнить его содержимое следующим кодом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/*** *** Отправка ссылки на почту ********************************/ add_action( 'woocommerce_payment_complete', 'send_download_link_to_customer' ); function send_download_link_to_customer( $order_id ) { $order = wc_get_order( $order_id ); $items = $order->get_items(); foreach ( $items as $item ) { $product_id = $item->get_product_id(); $product = wc_get_product( $product_id ); if ( $product->is_downloadable() ) { $downloads = $product->get_downloads(); foreach ( $downloads as $download ) { $url = $download['file']; $name = $download['name']; $email = $order->get_billing_email(); $subject = 'Download Link for ' . $name; $message = 'Dear Customer, Here is your download link: ' . $url; wp_mail( $email, $subject, $message ); } } } } |
В функции send_download_link_to_customer() мы используем хук woocommerce_payment_complete, который вызывается после того, как заказ был оплачен. Затем мы получаем все товары в заказе и проверяем, является ли каждый товар загружаемым. Если товар загружаемый, мы получаем ссылку на скачивание и отправляем её покупателю по электронной почте с помощью функции wp_mail().
Если письмо со ссылкой на скачивание не отправляется, то возможно у вас не настроена отправка почты на вашем сервере. В этом случае можно использовать сторонние сервисы для отправки электронной почты, такие как SendGrid или Mailgun.
Для отправки почты с сервера должен быть настроен почтовый сервер. В большинстве случаев, на сервере уже установлен и настроен почтовый сервер, например, Postfix или Exim. Если вы используете специализированный хостинг для WordPress, то почтовый сервер уже должен быть настроен для вас.
Если вы используете свой собственный сервер, то вам нужно будет установить и настроить почтовый сервер самостоятельно. Для этого, как я уже упоминал выше, можно использовать специализированные программы, такие как Postfix, Exim или Sendmail.
Кроме того, при отправке электронной почты с помощью PHP необходимо убедиться, что функция mail() включена в настройках PHP. Если она отключена, то вы не сможете отправлять электронную почту с помощью PHP. Вы можете проверить, включена ли эта функция, в файле php.ini или обратиться к вашему хостинг-провайдеру для получения помощи. Кроме того, почитайте о том, как включить и проверить работу функции mail() на сервере.
Всем WEB!