首页 > 解决方案 > 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,这样做的功能是什么?

标签: phpwordpresswoocommercepasswordsaccount

解决方案


您应该始终避免覆盖任何核心文件,因为当 WordPress 更新时您会丢失您的更改,并且您可能会在相关的合理过程中遇到大麻烦。

wp_set_password()在 Woocommerce 中,方法相当于 WordPress 。WC_Customer set_password()

要使其可插入,您可以使用位于方法中的与[WC_Customer_Data_Store][4]相关的钩子update()

  • 在创建用户时,对于“用户注册”,使用woocommerce_new_customeraction 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();

推荐阅读