Ваш вопрос не совсем понятен или недостаточно подробен. Мы не знаем, пытаетесь ли вы добавить эти данные в пользовательскую таблицу в вашей базе данных Wordpress или в другую базу данных.
Если вы пытаетесь вставить данные в пользовательскую таблицу в вашей базе данных WordPress, вы должны использовать WPDB Class (как я использую в своем ответе), если нет, вы должны использовать последний фрагмент кода.
$order_id
не определен, и ваш код выдает ошибку. Также переменная $string
не определена , и если это индексированный столбец, он не нужен появиться (как в первом фрагменте кода ниже).
Похоже, вы нацелены на "выполненные" заказы. Использование хука woocommerce_email_before_order_table
сделает ваш код активированным несколько раз в каждом уведомлении по электронной почте. Также этот хук действительно не удобен для запуска каких-либо изменений в базе данных.
Следующий код будет активирован, когда статус заказа «завершен». Так что есть 2 случая:
1) Действуя в базе данных Wordpress для пользовательской таблицы:
add_action( 'woocommerce_order_status_completed', 'generate_code_on_order_complete', 20, 2 );
function generate_code_on_order_complete( $order_id, $order ){
global $wpdb;
$billing_email = $order->get_billing_email(); // Billing email
$total_tax = $order->get_total_tax(); // Billing email
$wpdb->query("
INSERT INTO test_vouchers (email, redeemed, value)
VALUES ('$billing_email','0','$total_tax');
");
}
Код помещается в файл function.php активной дочерней темы (или активной темы). проверено и работает.
2) Вставка данных в другую базу данных, отличную от Wordpress (не проверено):
Вы должны заполнить следующий код, чтобы подключить базу данных к вашей внешней базе данных и вставить данные ... Помните, что $string
не определено.
add_action( 'woocommerce_order_status_completed', 'generate_code_on_order_complete', 20, 2 );
function generate_code_on_order_complete( $order_id, $order ){
$billing_email = $order->get_billing_email(); // Billing email
$total_tax = $order->get_total_tax(); // Billing email
## To be completed by you (below) ##
$connection = DBLogin();
$query = "INSERT INTO test_vouchers (voucher_id, email, redeemed, value) VALUES ('$string','$billing_email','0','$total_tax')";
}
Код помещается в файл function.php активной дочерней темы (или активной темы).