我已经实现了一个自定义 HTML 表单并要求我的客户将传递一些数据以成功下订单。没有这些细节,我的订单就毫无意义。
对于 HTML 表单,我引用了下面的一些自定义 PHP 脚本,它处理来自表单的 POST 数据并以编程方式使用这些数据创建购物车。感谢@LoicTheAztec 帮助我实现了这一目标。
script.php
文件代码:
<?php
require_once("../wp-load.php");
$customer_name = $_POST["customer_name"];
$customer_email = $_POST["customer_email"];
$customer_sex = $_POST["customer_sex"];
$customer_age = $_POST["customer_age"];
$product_id = $_POST["product_id"];
$custom_data = array(); // Initializing
if( isset($_POST['customer_name']) && ! empty($_POST['customer_name']) )
$custom_data['custom_data']['name'] = $_POST['customer_name'];
if( isset($_POST['customer_email']) && ! empty($_POST['customer_email']) )
$custom_data['custom_data']['email'] = $_POST['customer_email'];
if( isset($_POST['customer_sex']) && ! empty($_POST['customer_sex']) )
$custom_data['custom_data']['sex'] = $_POST['customer_sex'];
if( isset($_POST['customer_age']) && ! empty($_POST['customer_age']) )
$custom_data['custom_data']['age'] = $_POST['customer_age'];
global $woocommerce;
if (WC()->cart->add_to_cart( $product_id, '1', '0', array(), $custom_data )) {
var_dump($product_id);
} else {
var_dump($customer_name);
}
header("Location: ./checkout");
?>
如您所见,我们使用WC_Cart
add_to_cart()
方法以编程方式创建了购物车项目。因此,所有自定义数据都作为自定义购物车项目数据保存到购物车。
现在,我们还放置了一个代码块functions.php
来在结帐页面上打印这些数据。
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
//var_dump($checkout);
global $woocommerce;
echo '<div id="my_custom_checkout_field"><h2>' . __('Child Info') . '</h2>';
foreach ( $woocommerce->cart->get_cart() as $cart_item ) {
if( isset($cart_item['custom_data']) ) {
$custom_data = $cart_item['custom_data'];
echo("<div>Name: <strong>" . $custom_data['name'] . "</strong></div>");
echo("<div>Email: <strong>" . $custom_data['email'] . "</strong></div>");
echo("<div>Gender: <strong>" . $custom_data['sex'] . "</strong></div>");
echo("<div>Age: <strong>" . $custom_data['age'] . "</strong></div>");
}
}
echo '</div>';
}
现在,我正在尝试将结帐页面上打印的这些数据也添加到订单页面。由于没有这些数据我的订单无法完成,用户需要填写这些数据,当他创建订单时,这些数据也需要传递到订单摘要页面。管理员还需要能够查看这些数据,以便处理订单。
我希望这个描述能清除一切,并再次感谢@LoicTheAztec 让我能够做到这一点。非常感谢。