检查匿名客户是否已经在WooCommerce中购买了特定产品

时间:2019-07-12 16:23:53

标签: php wordpress cookies woocommerce orders

我要标记未注册的客户,他们已经使用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数组为空。

0 个答案:

没有答案