获取当前会话中购物车的所有项目的名称

时间:2020-04-02 作者:Raashid Din

我正在创建一个代码,它将帮助我将购物车中的当前项目发送到客户的电子邮件地址。虽然我从之前的问题中得到了帮助,但我失败了。

下面是我希望代码执行的操作。

获取未登录用户的购物车项目名称但当我发送商品名称时,只有一个购物车的商品名称被发送到用户的电子邮件地址。

这是我的密码。

    // 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);
        }
我很困惑为什么这个代码只在电子邮件中发送一个项目名称。

可能是我做错了。请你在这方面帮助我好吗。

非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:simongcc 整理而成

这里只显示代码的循环部分

因为我不知道$session_data.

我想是吧$session_data[$key] 首先返回产品名称以创建示例

// 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

相关推荐

Issue with contact form 7

我的一个客户为他们的联系人表单安装了联系人表单7,但他们在“发件人”字段中遇到错误“(配置错误),使用了无效的邮箱语法。”表单如下所示:[text text-54 placeholder \"Your Name\"][text text-54 placeholder \"Your Company\"] [email* email-317 placeholder \"Email Address\"][tel tel-646 placeholder \"Phone Number\"] [tex