有什么方法可以通过任何钩子在WooCommerce结帐页面中检索干净的未哈希密码值?
我需要做的是:创建新的WordPress用户时,我需要创建一个Firebase Auth用户。如果这不可能,那么实现这一目标的最佳实践是什么?
我尝试了什么
首先,我尝试在结帐时创建一个新的自定义字段,并使用以下方法进行检索:
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中创建用户。
你有什么主意吗?
正如您将在
wc-user-functions.php
文件中看到的那样,该功能wc_create_new_customer
在创建新帐户时使用。
要检查结帐页面,您可以使用条件标签
is_checkout()
在结帐页面上返回true。
因此,要拦截未隐藏的密码,可以使用woocommerce_created_customer
挂钩。该$unhashed_password
变量将包含未加密的密码。
function action_woocommerce_created_customer ( $customer_id, $new_customer_data, $password_generated ) {
// Returns true on the checkout page.
if ( is_checkout() ) {
$unhashed_password = $new_customer_data[user_pass];
}
}
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句