我要标记未注册的客户,他们已经使用cookie,会话变量或其他方式购买了产品。
我尝试使用下面的代码,但是这种方法似乎不起作用。在第一种方法中,我尝试保存一些东西。然后,我尝试获取woocommerce已使用的会话cookie,以将其作为唯一标识符保存在数据库中。之后,我可以从数据库中读取它,以查看它是否是新的唯一用户。
add_action( 'woocommerce_payment_complete', 'so_payment_complete' );
add_action( 'woocommerce_order_status_completed', 'so_payment_complete' );
function so_payment_complete( $order_id){
setcookie('so_payment_complete', 1, time()+7200);
WC()->session->set( 'so_payment_complete',true );
$session = new WC_Session_Handler();
$session_data = $session->get_session_data();
file_put_contents(__DIR__ . '/return_products.txt','cookies:'.(print_r($_COOKIE,true)) . "\n" ,FILE_APPEND );
file_put_contents(__DIR__ . '/return_products.txt','get_session_data:'.(print_r($session_data,true)) . "\n" ,FILE_APPEND );
}
似乎来自setcookie
的cookie从未到达客户端。 WC()->session->set
永远不会到达数据库。 WC()->session->get
也无法在其他页面上获取它。
$_COOKIE
和$session_data
数组为空。