我正在创建一个代码,它将帮助我将购物车中的当前项目发送到客户的电子邮件地址。虽然我从之前的问题中得到了帮助,但我失败了。
下面是我希望代码执行的操作。
获取未登录用户的购物车项目名称将这些名称发送到客户的电子邮件地址但当我发送商品名称时,只有一个购物车的商品名称被发送到用户的电子邮件地址。
这是我的密码。
// Change cart item name and price
add_action( \'woocommerce_before_calculate_totals\', \'change_cart_item_name_and_price\', 10, 1 );
function change_cart_item_name_and_price( $cart ) {
if ( did_action( \'woocommerce_before_calculate_totals\' ) >= 2 )
return;
// Get new items names from WC_Session
$session_data = (array) WC()->session->get( \'new_item_names\' );
// Loop through cart items
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$item_names = $cart_item[\'data\']->get_name();
// If item name doesn\'t exist in WC_Session for this cart item, we do it
if( ! isset($session_data[$cart_item_key]) ) {
$session_data[$cart_item_key] = $item_names;
WC()->session->set( \'new_item_names\', $session_data );
}
}
}
然后是我的表格处理。
if (isset($_POST[\'enquiry-cart\']) && wp_verify_nonce( $_POST[\'enquiry_cart\'], \'enquiry-cart\' )) {
$session_data = (array) WC()->session->get( \'new_item_names\' );
foreach (WC()->session->get(\'cart\') as $key => $value) {
$data = $session_data[$key];
}
$contactName = htmlentities(stripslashes(trim($_POST[\'contactName\'])));
$contactEmail = htmlentities(stripslashes(trim($_POST[\'contactEmail\'])));
$contactMessage = htmlentities(stripslashes(trim($_POST[\'contactMessage\'])));
$emailTo = \'[email protected]\';
$subject = \'Enquiry From: \'.$contactName;
$body = "Name: $contactName \\n\\n Email: $contactEmail \\n\\n \\n\\n Message: $contactMessage $data";
$headers = \'From: \'.$contactName.\' <\'.$emailTo.\'>\' . "\\r\\n" . \'Reply-To: \' . $emailTo;
wp_mail([$emailTo, $contactEmail], $subject, $body, $headers);
}
我很困惑为什么这个代码只在电子邮件中发送一个项目名称。
可能是我做错了。请你在这方面帮助我好吗。
非常感谢您的帮助。
最合适的回答,由SO网友:simongcc 整理而成
这里只显示代码的循环部分
因为我不知道$session_data
.
我想是吧$session_data[$key]
首先返回产品名称以创建示例由于您正在创建自定义电子邮件,我假设支持HTML电子邮件
// examples to show how to correctly loop the data with separation
$data = \'\';
foreach (WC()->session->get(\'cart\') as $key => $value) {
$data .= $session_data[$key] . \', \';
}
echo $data; // output something or put $data to somewhere to use