💡

【WordPress】wp-login.php?action=lostpasswordをリダイレクトさせる

2022/05/19に公開

背景

WP-Membersで「パスワードを忘れた方」のリンク先はwp-login.php?action=lostpasswordになっているが、パスワードリセット画面のショートコードを埋め込んだ固定ページに遷移させたかった。

試したこと

WordPressのリダイレクトでググるとこんな感じのがよく出てきます。
URLの文字列を取得して、wp_redirectでいけるかと思いきや無理でした...

functions.php
add_action( 'get_header', 'specified_url_redirect' );
function specified_url_redirect(){
	$url = $_SERVER['REQUEST_URI'];
	if(strstr($url,'wp-login.php?action=lostpassword')){
		wp_redirect( get_site_url('/lostpassword'), 301 );
		exit;
	}
}

実現できたコード

フィルターでlostpassword_urlを使ってフックさせるといけました。

functions.php
add_filter( 'lostpassword_url', 'my_lost_password_page', 10, 2 );
function my_lost_password_page( $lostpassword_url, $redirect ) {
    return home_url( '/lostpassword' . $redirect );
}

参考ページ

https://developer.wordpress.org/reference/hooks/lostpassword_url/

Discussion