wp_login_form()

wp_login_form()
目次

wp_login_form() の用途

wp_login_form() は、WordPressのログインフォームをページ内に表示するための関数です。ショートコードのように使えて、会員制サイトやカスタムページ内にログインフォームを埋め込むのに便利です。

管理画面以外のフロントページや固定ページ、ウィジェットエリアなどに簡単にログインフォームを出力できます。

wp_login_form() の使用方法

wp_login_form( array $args = array() )

パラメータ

引数説明
echoboolフォームを出力(true)または返す(false)。デフォルトはtrue。
redirectstringログイン後にリダイレクトさせたいURL。空の場合は現在のページに戻る。
form_idstringフォーム全体のHTML ID属性。
label_usernamestring「ユーザー名」ラベルのテキスト。
label_passwordstring「パスワード」ラベルのテキスト。
label_rememberstring「ログイン状態を保存する」チェックボックスのラベル。
label_log_instring「ログイン」ボタンのラベル。
rememberbool「ログイン状態を保存する」チェックボックスを表示するかどうか。

wp_login_form() の使用例

シンプルなログインフォームを表示

<?php wp_login_form(); ?>

ログイン後にマイページに遷移するフォーム

<?php
wp_login_form( array(
    'redirect' => home_url( '/mypage/' )
) );
?>

ラベルをカスタマイズする

<?php
wp_login_form( array(
    'label_username' => 'ユーザーID',
    'label_password' => 'パスワード',
    'label_log_in'   => 'ログインする',
    'remember'       => false
) );
?>

wp_login_form() の関連関数

関数名用途
wp_login_url()ログインページURLを取得
wp_logout_url()ログアウトURLを取得
is_user_logged_in()ログイン状態を判定
wp_lostpassword_url()パスワードリセットURLを取得

セキュリティの注意点

  • フォームの出力先ページがHTTPSであることを推奨。
  • 表示条件を is_user_logged_in() で分岐して、ログイン中に表示しないよう制御可能。
  • ログインフォーム周辺にCSRF対策(nonce)はすでにWordPress内部で処理されていますが、出力側でのesc_html()esc_url()によるサニタイズも有効です。

ログイン状態による表示制御のコード例

<?php
if ( is_user_logged_in() ) {
    echo '<p>ようこそ、' . esc_html( wp_get_current_user()->display_name ) . 'さん</p>';
    echo '<a href="' . esc_url( wp_logout_url( home_url() ) ) . '">ログアウト</a>';
} else {
    wp_login_form( array(
        'redirect' => home_url( '/mypage/' )
    ) );
}
?>

補足

  • wp_login_form() は ショートコードではない ため、HTMLエディタ内ではそのまま使用できません。テンプレートやウィジェット(PHPが使える場所)で利用します。
  • ブロックエディターや固定ページで使いたい場合は、[login_form] ショートコードを作って functions.php に登録しておくことも可能です。

パスワード再発行リンクの追加方法(wp_lostpassword_url())

WordPressのパスワード再発行ページ(通常は wp-login.php?action=lostpassword)へのリンクは、次のように wp_lostpassword_url() で取得できます。

ログインフォーム + パスワード再発行リンク + 案内メッセージの実装例

<?php
if ( is_user_logged_in() ) {
    // ログイン中のユーザー向け表示
    $current_user = wp_get_current_user();
    echo '<p>ようこそ、' . esc_html( $current_user->display_name ) . 'さん</p>';
    echo '<a href="' . esc_url( wp_logout_url( home_url() ) ) . '">ログアウト</a>';
} else {
    // 未ログインユーザー向け案内
    echo '<p>ログインが必要です。以下のフォームからログインしてください。</p>';

    // ログインフォーム
    wp_login_form( array(
        'redirect' => home_url( '/mypage/' )
    ) );

    // パスワード再発行リンク
    echo '<p><a href="' . esc_url( wp_lostpassword_url() ) . '">パスワードをお忘れですか?</a></p>';

    // 新規ユーザー登録ページがある場合(任意)
    echo '<p>初めての方は <a href="' . esc_url( wp_registration_url() ) . '">新規登録</a> からどうぞ。</p>';
}
?>

利用シーン別

シーン補足対応
会員制サイト上記のようにログイン・未ログインで内容を切り替えるのが基本
固定ページでログイン専用ページを作る場合固定ページテンプレートにこのコードを直接記述すると便利
ショートコードとして使いたい場合functions.php に短いショートコードを追加して記事中でも使えるようにできます

wp_lostpassword_url() だけの使用例(カスタムリンク)

<?php
echo '<a href="' . esc_url( wp_lostpassword_url() ) . '">パスワードをリセットする</a>';
// 出力例:https://example.com/wp-login.php?action=lostpassword
?>
  • wp_lostpassword_url() を使えば、再発行ページURLが取得できる。
  • is_user_logged_in() と組み合わせて「ログインフォーム+案内+再発行リンク」をまとめて表示できる。
  • 会員制サイトやログイン必須コンテンツの導線として非常に有用。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次