php - WooCommerce 中 wp_set_password 函数的等价物是什么?
问题描述
我发现我可以自定义wp_set_password
函数并将我的代码放入其中。但它仅在用户通过/wp-login.php
.
这是我的代码:
function wp_set_password( $password, $user_id ) {
// Keep original WP code
global $wpdb;
$hash = wp_hash_password( $password );
$wpdb->update(
$wpdb->users,
array(
'user_pass' => $hash,
'user_activation_key' => '',
),
array( 'ID' => $user_id )
);
wp_cache_delete( $user_id, 'users' );
// and now add your own
$custom_hash = password_hash( $password, PASSWORD_DEFAULT );
update_user_meta($user_id, 'user_pass2', $custom_hash);
}
但是我已经安装了 WooCommerce,关于密码的所有三个主要任务是:
- 登记,
- 资料更新,
- 重设密码。
所以这段代码对我没有帮助,我在 WooCommerce 中搜索了类似的功能,但找不到。无论如何,我可以在我的自定义插件中像这样编辑 WooCommerce,这样做的功能是什么?
解决方案
您应该始终避免覆盖任何核心文件,因为当 WordPress 更新时您会丢失您的更改,并且您可能会在相关的合理过程中遇到大麻烦。
wp_set_password()
在 Woocommerce 中,方法相当于 WordPress 。WC_Customer
set_password()
要使其可插入,您可以使用位于方法中的与[WC_Customer_Data_Store][4]
类相关的钩子update()
:
- 在创建用户时,对于“用户注册”,使用
woocommerce_new_customer
action hook 。 - 在用户更新事件上,使用
woocommerce_update_customer
动作挂钩 - 在“用户注册”(用户创建)上,您可以使用
woocommerce_new_customer
操作挂钩 - 在我的帐户 > 帐户详细信息部分更改/保存密码时,您也可以使用
woocommerce_save_account_details
操作挂钩。 - 重置密码后,您可以使用
woocommerce_customer_reset_passwor
操作挂钩。
方法的示例用法:WC_Customer
set_password()
// Get the WC_Customer instance object from the user ID
$customer = new WC_Customer( $user_id );
// Set password
$customer->set_password( $password );
// Save to database and sync
$customer->save();
推荐阅读
- python - 如何使用 scikit-learn 可视化两个类的边界/决策函数
- javascript - Microsoft Translate Voice 请求时限制 200-400 字
- python - 在 Visual Studio 代码中配置输出屏幕
- python-2.7 - 使用 selenium 和 python 在 Chrome v62 及更高版本中无法处理警报
- vba - VBA:限定动态范围的工作表
- c# - 使用 .net 结合参数和表单数据调用 API 方法
- ajax - AJAX 和 WebSocket 响应混合
- mysql - mysql无法将列从查询传递到嵌套子查询
- python - LSTM Embedding 输出大小和 LSTM 数量
- javascript - 如何使用属性名称按顺序控制台记录整个 HTML DOM 树