Wordpress 在Woocommerce签出页面上更改密码
我正在进行一项开发,我需要已经在我的网站上注册的用户在woocommerce结帐页面上强制更改密码 我尝试了经典的解决方案:Wordpress 在Woocommerce签出页面上更改密码,wordpress,woocommerce,Wordpress,Woocommerce,我正在进行一项开发,我需要已经在我的网站上注册的用户在woocommerce结帐页面上强制更改密码 我尝试了经典的解决方案: add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields'); function custom_override_checkout_fields($fields) { $fields['account']['account_password'] = array(
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\u set\u密码($password,$user\u id)代码>?如果是这样,您会将代码放置在哪里
我需要一种方法来执行更新
并从wp\u用户
表中更改用户通行证
。试试看
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'] );
}
}
我尝试了@Raihan代码和谷歌代码的混合,但是我无法更改用户通行证。使用此代码,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'] );
}
}
谢谢你的回答!我对它进行了测试,但签出时抛出了字段帐户密码的“内部服务器错误”。我相信woocommerce\u checkout\u update\u user\u meta
会从woocommerce更改用户数据,但不会从通用表wp\u users
更改用户数据。我需要更改wordpress nativeuser\u pass
。您可能应该使用wp\u set\u password
而不是update\u user\u meta