WordPress デフォルトのログインはwww.example.com/wp-login.phpです。 以下に紹介するコードスニペットを使用すると、 WordPress ログインURLをUltimate MemberログインページURL www.example.com/login/に変更できます。
WordPress デフォルトのログイン URL を Ultimate Member ログインページに置き換える
メンバーシップのプラグインである 究極のメンバーを使用すると、メンバーの役割に応じて、特定のページまたはページ内の特定のコンテンツへのアクセスを精巧に制御できます。
WordPress デフォルトのログインURLにアクセスしたときにUMログインページのURLに移動するには、次のコードスニペットをテーマの関数ファイル(チャイルドテーマをインストールし、チャイルドテーマ内のfunctions.phpファイルに追加できます。
/**
* Replace login page URL to UM login page, 로그인 페이지 URL을 UM 로그인 페이지로 교체
* @param string $login_url
* @param string $redirect
* @return string
*/
function um_login_url( $login_url, $redirect ){
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
上記のコードは、 Ultimate Member マニュアルサイトで紹介されたコードです。
しかし、私は最新です WordPress バージョンでテストしてみると、example.com/wp-adminにアクセスするとUMログインページにリダイレクトされますが、example.com/wp-login.phpページにアクセスするとUMログインページに移動しませんでした。
この現象が発生した場合は、次のコードでテストできます。
function um_login_url( $login_url, $redirect ) {
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
function redirect_to_um_login() {
$requested_url = $_SERVER['REQUEST_URI'];
$is_wp_login_php = basename( $_SERVER['SCRIPT_NAME'] ) === 'wp-login.php';
$is_wp_admin = strpos( $requested_url, '/wp-admin/' ) !== false;
if ( $is_wp_login_php || $is_wp_admin ) {
$um_login_page_id = UM()->options()->get( 'core_login' );
if ( get_post( $um_login_page_id ) ) {
$redirect = ( isset( $_REQUEST['redirect_to'] ) ) ? urlencode( $_REQUEST['redirect_to'] ) : '';
$um_login_page_url = add_query_arg( 'redirect_to', $redirect, get_permalink( $um_login_page_id ) );
wp_redirect( $um_login_page_url );
exit;
}
}
}
add_action( 'wp_loaded', 'redirect_to_um_login' );
別の方法として、次のコードでテストすることもできます。
function um_login_url( $login_url, $redirect ) {
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
function redirect_to_um_login() {
if ( $GLOBALS['pagenow'] === 'wp-login.php' && !isset( $_REQUEST['action'] ) ) {
$um_login_page_id = UM()->options()->get( 'core_login' );
if ( get_post( $um_login_page_id ) ) {
$redirect = ( isset( $_REQUEST['redirect_to'] ) ) ? urlencode( $_REQUEST['redirect_to'] ) : '';
$um_login_page_url = add_query_arg( 'redirect_to', $redirect, get_permalink( $um_login_page_id ) );
wp_redirect( $um_login_page_url );
exit;
}
}
}
add_action( 'init', 'redirect_to_um_login' );
上記のコードを使用すると、wp-login.phpとwp-adminの両方に対してUMログインページに移動します。
コメントを残す