Wordpress REST API - 发送重置密码 link
Wordpress REST API - send reset password link
我想从我的应用程序创建一个请求。 (iOS 和 Android - 使用 Xamarin 编码)。
解释:
该请求应触发 WordPress action=lostpassword
。 - 用户收到一封电子邮件以在浏览器中重置密码。
或
用户将能够设置新密码。 WordPress 向电子邮件发送 link - 用户必须在其中验证他更改了密码。
有没有机会通过对 REST API.
的请求来做到这一点
也许有类似的想法?
我已经试过了:
- 文档中给出了功能但对我不起作用的插件
- 手动调用
wp-login.php?action=lostpassword
正文
{
"redirect_to": "",
"user_login": "name@provider.de",
"wp-submit": "Neues+Passwort"
}
我觉得this应该能帮到你。
示例显示 return 丢失密码 URL http://example.com/lostpassword/ wp_lostpassword_url() 函数:
add_filter( 'lostpassword_url', 'my_lost_password_page', 10, 2 );
function my_lost_password_page( $lostpassword_url, $redirect ) {
return home_url( '/lostpassword/?redirect_to=' . $redirect );
}
创建您的自定义 api
URL
https://yourdomain/api/forgot_password.php
参数
登录:manoj.infoways@gmail.com
在根目录中创建文件夹 api 并创建文件 forgot_password.php
forgot_password.php
<?php include '../wp-load.php';
$login = $_REQUEST['login'];
if ( empty( $login ) ) {
$json = array( 'code' => '0', 'msg' => 'Please enter login user detail' );
echo json_encode( $json );
exit;
}
$userdata = get_user_by( 'email', $login);
if ( empty( $userdata ) ) {
$userdata = get_user_by( 'login', $login );
}
if ( empty( $userdata ) ) {
$json = array( 'code' => '101', 'msg' => 'User not found' );
echo json_encode( $json );
exit;
}
$user = new WP_User( intval( $userdata->ID ) );
$reset_key = get_password_reset_key( $user );
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger( $user->user_login, $reset_key );
$json = array( 'code' => '200', 'msg' => 'Password reset link has been sent to your registered email' );
echo json_encode( $json );
exit;
?>
login 是参数名,记住。
它对我来说 100% 工作,试试吧
您可以在 function.php 或自定义插件等任何其他地方使用此代码创建自定义端点
function custom_user_forget_password($request)
{
$email = $request->get_param('email');
$userdata = get_user_by('email', $email);
if (empty($userdata)) {
$userdata = get_user_by('login', $email);
}
if (empty($userdata)) {
return __('User not found');
}
$user = new WP_User(intval($userdata->ID));
$reset_key = get_password_reset_key($user);
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger($user->user_login, $reset_key);
return __('Password reset link has been sent to your registered email.');
}
add_action('rest_api_init', function () {
register_rest_route('custom/v1/', '/forget_password', array(
'methods' => 'POST',
'callback' => 'custom_user_forget_password',
));
});
然后你可以调用 post 请求此端点 (URL /wp-json/custom/v1/forget_password) 在任何你想要的地方,如果用户存在,它将发送密码重置 link .
我想从我的应用程序创建一个请求。 (iOS 和 Android - 使用 Xamarin 编码)。
解释:
该请求应触发 WordPress action=lostpassword
。 - 用户收到一封电子邮件以在浏览器中重置密码。
或
用户将能够设置新密码。 WordPress 向电子邮件发送 link - 用户必须在其中验证他更改了密码。 有没有机会通过对 REST API.
的请求来做到这一点也许有类似的想法?
我已经试过了:
- 文档中给出了功能但对我不起作用的插件
- 手动调用
wp-login.php?action=lostpassword
正文
{ "redirect_to": "", "user_login": "name@provider.de", "wp-submit": "Neues+Passwort" }
我觉得this应该能帮到你。
示例显示 return 丢失密码 URL http://example.com/lostpassword/ wp_lostpassword_url() 函数:
add_filter( 'lostpassword_url', 'my_lost_password_page', 10, 2 );
function my_lost_password_page( $lostpassword_url, $redirect ) {
return home_url( '/lostpassword/?redirect_to=' . $redirect );
}
创建您的自定义 api
URL
https://yourdomain/api/forgot_password.php
参数
登录:manoj.infoways@gmail.com
在根目录中创建文件夹 api 并创建文件 forgot_password.php
forgot_password.php
<?php include '../wp-load.php';
$login = $_REQUEST['login'];
if ( empty( $login ) ) {
$json = array( 'code' => '0', 'msg' => 'Please enter login user detail' );
echo json_encode( $json );
exit;
}
$userdata = get_user_by( 'email', $login);
if ( empty( $userdata ) ) {
$userdata = get_user_by( 'login', $login );
}
if ( empty( $userdata ) ) {
$json = array( 'code' => '101', 'msg' => 'User not found' );
echo json_encode( $json );
exit;
}
$user = new WP_User( intval( $userdata->ID ) );
$reset_key = get_password_reset_key( $user );
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger( $user->user_login, $reset_key );
$json = array( 'code' => '200', 'msg' => 'Password reset link has been sent to your registered email' );
echo json_encode( $json );
exit;
?>
login 是参数名,记住。
它对我来说 100% 工作,试试吧
您可以在 function.php 或自定义插件等任何其他地方使用此代码创建自定义端点
function custom_user_forget_password($request)
{
$email = $request->get_param('email');
$userdata = get_user_by('email', $email);
if (empty($userdata)) {
$userdata = get_user_by('login', $email);
}
if (empty($userdata)) {
return __('User not found');
}
$user = new WP_User(intval($userdata->ID));
$reset_key = get_password_reset_key($user);
$wc_emails = WC()->mailer()->get_emails();
$wc_emails['WC_Email_Customer_Reset_Password']->trigger($user->user_login, $reset_key);
return __('Password reset link has been sent to your registered email.');
}
add_action('rest_api_init', function () {
register_rest_route('custom/v1/', '/forget_password', array(
'methods' => 'POST',
'callback' => 'custom_user_forget_password',
));
});
然后你可以调用 post 请求此端点 (URL /wp-json/custom/v1/forget_password) 在任何你想要的地方,如果用户存在,它将发送密码重置 link .