#php #html #wordpress #woocommerce
#php #HTML #wordpress #woocommerce
Вопрос:
У меня есть продукт Woocommerce, и я хотел бы отправить стандартное электронное письмо с подтверждением заказа Woocommerce как администратору сайта, так и компании, если оно выбрано из выпадающего списка на этой странице продукта.
Рюкзак $ 50
Выберите опцию
- Бизнес прежде всего
- Бизнес второй
- Бизнес третий
Если они сначала выберут бизнес, на электронную почту Business First будет отправлено электронное письмо с подтверждением заказа info@businessfirst.com
Это код, который у меня есть до сих пор
HTML
<select name="wapf[field_5f87355d578fd]" class="wapf-input" data-is-required="" data-field-id="5f87355d578fd">
<option value="">Choose an option</option>
<option value="business_1">Business 1</option>
<option value="business_2">Business 2</option>
<option value="business_3">Business 3</option>
</select>
PHP
Я добавил это в functions.php
function sv_conditional_email_recipient( $recipient, $order ) {
// Bail on WC settings pages since the order object isn't yet set yet
// Not sure why this is even a thing, but shikata ga nai
$page = $_GET['page'] = isset( $_GET['page'] ) ? $_GET['page'] : '';
if ( 'wc-settings' === $page ) {
return $recipient;
}
// just in case
if ( ! $order instanceof WC_Order ) {
return $recipient;
}
$items = $order->get_items();
// check if a shipped product is in the order
foreach ( $items as $item ) {
$product = $order->get_product_from_item( $item );
// adds our extra recipient if customer selected Business 1 from the dropdown on this product order
if (select(name="wapf[field_5f87355d578fd]") value == "business_1") {
$recipient .= ', info@businessfirst.com';
return $recipient;
}
// adds our extra recipient if customer selected Business 2 from the dropdown on this product order
if (select(name="wapf[field_5f87355d578fd]") value == "business_2") {
$recipient .= ', info@businesssecond.com';
return $recipient;
}
}
return $recipient;
}
add_filter( 'woocommerce_email_recipient_new_order', 'sv_conditional_email_recipient', 10, 2 );
Я думаю, что я близок, но у меня это не совсем правильно.
Комментарии:
1. Что означает «не совсем правильно»? Есть ли ошибка, которая выдается?
2. Где определен этот фильтр?
new_order
это не в WooCommerce или вызываемая функцияselect()
3. @HowardE Я только что обновил свой код, чтобы отразить правильный фильтр. В
select()
этой области я немного заблудился. То, что я пытаюсь сделать, это отправить дополнительное электронное письмо с новым заказом на адрес электронной почты по моему выбору при покупке продукта, в котором пользователь выбрал изselect
выпадающегоname="wapf[field_5f87355d578fd]"
option
списка значение an со значениемbusiness_1
4. У вас не включена отладка, когда вы это делаете, поскольку
select
это не функция. Это должно вызвать какую-то ошибку. Вам нужно найти значения сохраненных вами данных для каждого элемента заказа. Это утверждение(select(name="wapf[field_5f87355d578fd]") value == "business_1")
никогда не вернет true .5. Проблема со всем вашим вопросом заключается в том, что вывод вашего HTML
<select>
на странице продукта — это не то, что имеет значение, а скорее — где хранятся данные? Хранится ли он как мета элемента заказа или что? Используете ли вы плагины для добавления этого выпадающего списка или ACF? После добавления товара в корзину тот факт, что он был в какой-то момент$_POST[ 'wapf[field_5f87355d578fd]']
, больше не имеет значения… Где хранится дополнительная информация? Это то, что вам нужно для извлечения этого поля. Итак, я бы сначала отладил данные корзины, а затем данные заказа.
Ответ №1:
Вы хотите отправлять их по почте только в том случае, если они выбирают Бизнес 1, или они также должны иметь возможность отправлять бизнес 2 или 3? Если это так, вам нужно поместить оператор if в функцию с двумя другими if для других случаев.
Кроме того, если вы пытаетесь получить значение поля, у вас не может быть пробела. select(name="wapf[field_5f87355d578fd]") value
Я думаю, что в этом блоге точно описано, что вам нужно.
Комментарии:
1. Я также хочу иметь возможность отправлять электронные письма бизнесу 2, бизнесу 3 и т. Д…
2. В блоге, о котором я упоминал, рассказывается, как именно это сделать. 🙂
3. Это чертовски близко. Я только что обновил его. Я не думаю, что у меня есть правильная инструкция if в разделе
// adds our extra recipient if there's customer selected Business 1 from the dropdown on any product
Я пытаюсь выяснить, как отправлять электронное письмо только тогда, когда пользователь выбирает опцию из выпадающего списка продукта. Здесь находится продукт, с помощью которого я пытаюсь это сделать: rootmeals. wpengine.com/product/meals-donation Поле, в котором я пытаюсь достичь этого с помощью выпадающего списка » Агентство «.4. Затем вы должны добавить оператор if, чтобы проверить, не является ли поле выбора пустым, и если это не так, используйте операторы If, чтобы проверить, какой вариант был выбран.