我正在尝试将一个简单的文本输入保存到 WooCommerce 会话中。当用户将东西添加到他们的购物车时创建会话。
我的输入字段存在于自定义页面模板中,该模板将放置在购物车之后但结帐之前的用户流程中:购物车 > 我的模板 > 结帐。
捕获数据的简单表单(自定义模板文件)
<form name="group" method="post" class="checkout woocommerce-checkout" action="http://localhost:/site.dev/my-template">
<div class="group-order">
<p class="form-row form-row woocommerce-validated" id="create_new_group_field">
<label for="create_new_group" class="">Join an existing group</label>
<input type="text" class="input-text " name="create_new_group" id="create_new_group">
</p>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
接收和设置数据(我无法弄清楚何时/如何运行它。在我的自定义页面中)
更新 我已将下面的代码添加到我的页面模板顶部,以便页面处理自身,然后重定向到结帐。
函数 set_and_save_input_to_session() {
if( !is_admin( ) ) {
// User input
if( ! empty( $_POST['create_new_group'] ) ) {
$group_input_value = $_POST['create_new_group'];
// Set session and save data
WC()->session->set( 'group_order_data', $group_input_value );
wp_redirect( 'http://localhost:28/site.dev/checkout' );
exit();
}
} …Run Code Online (Sandbox Code Playgroud) 这就是我正在尝试做的事情以及在哪里。
在订单的结账流程中,在插件 WooCommerce 中;结帐过程完成后,您将被带到一个页面。它显示订单详细信息的概览。用于输出此页面的模板文件是 order-details.php。
这是我想补充的
我想像这样显示产品的产品类别:

这是我尝试添加的代码区域,即订单详细信息表的第一部分。
<tbody>
<?php
if ( sizeof( $order->get_items() ) > 0 ) {
foreach( $order->get_items() as $item ) {
$_product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
$item_meta = new WC_Order_Item_Meta( $item['item_meta'], $_product );
?>
<tr class="<?php echo esc_attr( apply_filters( 'woocommerce_order_item_class', 'order_item', $item, $order ) ); ?>">
<td class="product-name">
<?php
if ( $_product && ! $_product->is_visible() )
echo apply_filters( 'woocommerce_order_item_name', $item['name'], $item );
else
echo apply_filters( 'woocommerce_order_item_name', sprintf( '<a href="%s">%s</a>', get_permalink( $item['product_id'] ), …Run Code Online (Sandbox Code Playgroud)