我正在创建一个会员网站,并为每个会员计划完全创建了静态页面(只有 3 个计划)。但是,我已经为每个计划添加了产品,当我点击 SELECT PLAN 按钮时,我会重定向到一些自定义表单,在该表单中我会询问用户我们将用于完成计划的信息范围(与sneakertub.com 相同)。
我已将代码写入 PHP 页面,该页面将处理表单的提交操作。这个 PHP 文件infopage.php
将处理我通过 POST 调用发送的 POST 数据,并将这些所有数据存储到 WC 会话中。
$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"];
global $wp_session;
$data = array(
'customer_name' => $customer_name,
'customer_email' => $customer_email,
'customer_sex' => $customer_sex,
'customer_age' => $customer_age);
$wp_session['custom_SESSION_child']=$data;
WC()->session->set('custom_data_child', $data);
//Add product to WooCommerce cart.
WC()->cart->add_to_cart( $product_id )
但是,我认为上面的代码不起作用。因为我没有发现任何上述技术的价值。我用过wp_session
,WC()->session
但$_SESSION
没有办法奏效。
我正在尝试以functions.php
这种方式访问这些值,
add_action( 'woocommerce_before_calculate_totals', 'twf_additional_price', 1, 3 );
function twf_additional_price( $cart_object ) {
global $wpdb;
global $wp_session;
$session_data_2 = $wp_session['custom_SESSION_child'];
$session_data = WC()->session->get('custom_data_child');
var_dump($session_data);
var_dump($session_data2);
foreach ( $cart_object->cart_contents as $key => $value ) {
$extra_charge = 0;
if(isset($value['twf_user_custom_datas'])){
$extra_charge = 100;
}
$value['data']->set_price($value['data']->price + $extra_charge);
}
}
现在忽略for
循环。主要的是
var_dump($session_data);
var_dump($session_data2);
两者都只转储NULL
。
我的主要目标是将上述所有字段添加到 Woocommerce 结帐和订单页面中。
请让我知道这里有什么问题。我知道我可能正在采用非常糟糕的方法,但我希望计划选择结帐过程与sneakertub.com 相同。请让我知道是否有任何关于此或正确方法的教程。我更喜欢在没有插件的情况下这样做,但我也准备好使用插件。
感谢您的关注。