【问题标题】:Change your password on the Woocommerce Checkout-page在 Woocommerce 结帐页面上更改您的密码
【发布时间】:2020-06-01 22:20:42
【问题描述】:

我正在进行开发,我需要用户已经在我的网站上注册,在 woocommerce 结帐页面上强制更改他们的密码。

我尝试了经典的解决方案:

add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields');

function custom_override_checkout_fields($fields)
{
    $fields['account']['account_password'] = array(
      'type' => 'password',
      'required'  => true,
      'label' => __('Pass', 'woocommerce'),
      'placeholder' => _x('Pass', 'placeholder', 'woocommerce'),
      'class' => array('form-row-wide')
  );

    return $fields;
}

此模式仅适用于用户注册时,但不适用于更改密码。

你认为我应该做一个wp_set_password( $password, $user_id ); 吗?如果是这样,您会将代码放在哪里

我需要一种方法来创建 UPDATE 并从 wp_users 表中更改 user_pass

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    试试看。

    add_action( 'woocommerce_checkout_update_user_meta', 'wc_checkout_field_update_user_meta' );
    
       function wc_checkout_field_update_user_meta( $user_id, $data ) { 
    
         if ( $data['account_password'] ) {   
    
           update_user_meta( $user_id, 'account_password', $data['account_password'] );
         }
    
    }
    

    【讨论】:

    • 感谢您的回答!我对其进行了测试,但结帐时为字段 account_password 引发了“内部服务器错误”。我相信woocommerce_checkout_update_user_meta 会更改 Woocommerce 中的用户数据,但不会更改通用表 wp_users 中的用户数据。我需要更改 wordpress 本机 user_pass
    【解决方案2】:

    我尝试混合使用 @Raihan 代码和 Google 的代码,但 我无法更改 user_pass。使用此代码,Woocommerce 不会显示“内部服务器错误”。

    add_action( 'woocommerce_checkout_process', 'user_fields_woocommerce_checkout_process' );
    
    function user_fields_woocommerce_checkout_process(){
        if( is_user_logged_in() ){
            add_action('woocommerce_checkout_update_user_meta',
            'my_custom_checkout_field_update_user_meta' );
        }
    }
    
    function my_custom_checkout_field_update_user_meta( $user_id ) {
        if ( $data['account_password'] ) {
            update_user_meta( $user_id, 'account_password', $data['account_password'] );
        }
    }
    

    【讨论】:

    • 您可能应该使用wp_set_password 而不是update_user_meta
    猜你喜欢
    • 2015-11-29
    • 2016-07-20
    • 2017-11-09
    • 2019-11-13
    • 1970-01-01
    • 2017-06-16
    • 2017-07-30
    • 2023-04-04
    • 2016-09-05
    相关资源
    最近更新 更多