
目次
wp_login_form() の用途
wp_login_form()
は、WordPressのログインフォームをページ内に表示するための関数です。ショートコードのように使えて、会員制サイトやカスタムページ内にログインフォームを埋め込むのに便利です。
管理画面以外のフロントページや固定ページ、ウィジェットエリアなどに簡単にログインフォームを出力できます。
wp_login_form() の使用方法
wp_login_form( array $args = array() )
パラメータ
引数 | 型 | 説明 |
---|---|---|
echo | bool | フォームを出力(true)または返す(false)。デフォルトはtrue。 |
redirect | string | ログイン後にリダイレクトさせたいURL。空の場合は現在のページに戻る。 |
form_id | string | フォーム全体のHTML ID属性。 |
label_username | string | 「ユーザー名」ラベルのテキスト。 |
label_password | string | 「パスワード」ラベルのテキスト。 |
label_remember | string | 「ログイン状態を保存する」チェックボックスのラベル。 |
label_log_in | string | 「ログイン」ボタンのラベル。 |
remember | bool | 「ログイン状態を保存する」チェックボックスを表示するかどうか。 |
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()
と組み合わせて「ログインフォーム+案内+再発行リンク」をまとめて表示できる。- 会員制サイトやログイン必須コンテンツの導線として非常に有用。