首页 > 解决方案 > 检查在 Woocommerce 结帐期间注册的用户

问题描述

我需要在结帐期间跟踪用户注册(例如:在感谢页面上包含跟踪代码)。据我所知,当用户在结帐页面上注册时,没有关于$customeror对象内部注册的任何线索。$order此外,没有查询变量来表示这一点。

我怎样才能知道在 checkourt 过程中发生了注册?作为替代方案,我很乐意为此提供任何替代跟踪选项。

我尝试使用woocommerce_thankyou钩子来检查这一点。此外,我知道在这种情况下用户在结帐后登录。

标签: phpwordpresswoocommercecheckoutuser-registration

解决方案


我自己的解决方案不是最合适的方法,但有效。
因为在结账时注册会自动登录用户,所以我可以将注册日期与ThankYou页面生成时间进行比较。在这种情况下,如果用户在最后 30 秒内注册,则跟踪代码将放置在感谢页面上。

add_action( 'woocommerce_thankyou', 'add_tracking_code_to_thankyou', 10, 1 );
function add_tracking_code_to_thankyou( $order_id ) {
    // Only for logged in users
    if ( $order_id && is_user_logged_in() ) {
        $udata = wp_get_current_user();
        $registered = new \DateTime($udata->user_registered);
        $current = new \DateTime();

        // get seconds elapsed after user registration
        $interval = $current->format('U') - $registered->format('U');

        if ($interval <= 30) {
            // echo 'tracking code';
        }
    }
}

推荐阅读