是否有任何方法可以在WooCommerce结帐页面中使用任何钩子来检索干净的未散列密码值?
我需要做什么:当一个新的WordPress用户正在创建时,我需要创建一个Firebase Auth用户。如果这是不可能的,什么是实现这一点的最佳实践?
"我所尝试的"
首先,我尝试在 checkout 时创建一个新的自定义字段,并使用以下命令检索它:
function wh_CustomReadOrder($order_id)
{
$order = wc_get_order($order_id);
WC()->session = new WC_Session_Handler;
/*
* Next lets create a customer so we can access checkout fields
* If you will check a constructor for WC_Customer class you will see
* that if you will not provide user to create customer it will use some
* default one. Magic.
*/
WC()->customer = new WC_Customer;
/*
* Done. You can browse all chceckout fields (including custom ones)
*/
?>
<script type="text/javascript">
var order = <?php echo $order ?>;
var checkout_fields = <?php echo json_encode(WC()->checkout->checkout_fields) ?>
var email = order;
console.log(checkout_fields);
</script>
<?php
}
add_action('woocommerce_thankyou', 'wh_CustomReadOrder');
我得到了一个包含所有字段的数组,但我的自定义字段没有显示。但即使这样,WordPress密码仍然是不同的。最好的方法是简单地获得WordPress密码,然后在Firebase中创建用户。
你知道吗?
2条答案
按热度按时间xytpbqjk1#
正如您将在
wc-user-functions.php
文件中看到的,函数wc_create_new_customer
在创建新帐户时使用。要检查结帐页面,可以使用Conditional Tags
is_checkout()
在 checkout 页上返回true。因此,要拦截未散列的密码,可以使用
woocommerce_created_customer
钩子,$unhashed_password
变量将包含未散列的密码。aiqt4smr2#
我会考虑的一种方法是建立一个自定义的web表单来创建客户的帐户,这样你就可以随心所欲地操作数据。
例如,当用户提交表单时,获取数据,在WC/WP中注册新用户,将数据发送到firebase,然后重定向。
缺点是你必须100%地管理这个过程,并处理任何可能的错误。
另一种方式:
使用默认的WC或WP帐户创建表单,但在提交-〉防止默认与Javascript,采取数据(是的,你可以访问密码之前,它的散列),将其发送到Firebase,然后,提交表单,让WC/WP保存在数据库中的正常方式。
当我需要将数据发送到电子邮件管理软件时,我是这样做的。用户输入值,点击提交:我的代码会阻止submit事件,将数据发送到所需的位置,然后提交表单。
希望能有所帮助!