1. WordPress

wp_login_url()・wp_logout_url()・wp_login_form() を活用してカスタムログインを作ろう【WordPress】

Share

WordPressでログイン機能をカスタマイズしたいとき、役立つのが wp_login_url()wp_logout_url()、そして wp_login_form() の3つの関数です。

この記事では、それぞれの使い方と、実際のカスタマイズ例を交えてわかりやすく解説します。

wp_login_url():ログインページのURLを取得する

wp_login_url() はログインページのURLを返す関数です。

基本の使い方

<?php echo wp_login_url(); ?>

リダイレクト先を指定

<?php echo wp_login_url( home_url() ); ?>

ログイン成功後にトップページへリダイレクトされます。

wp_logout_url():ログアウト用のURLを取得する

wp_logout_url() はログアウト処理を行うURLを返します。

基本の使い方

<?php echo wp_logout_url(); ?>

リダイレクト先を指定

<?php echo wp_logout_url( home_url() ); ?>

ログアウト後、トップページに遷移します。

wp_login_form():ログインフォームをテーマ内に表示する

wp_login_form() を使えば、WordPressのログインフォームを任意の場所に表示できます。
特別なHTMLを書く必要がなく、テンプレートやウィジェットエリアに簡単に埋め込めます。

基本の使い方

<?php wp_login_form(); ?>

この一行で、ユーザー名・パスワード・ログインボタンが表示されます。

カスタマイズ可能なパラメータ

<?php
$args = array(
  'echo'           => true,
  'redirect'       => home_url(), 
  'form_id'        => 'loginform',
  'label_username' => 'ユーザー名',
  'label_password' => 'パスワード',
  'label_remember' => 'ログイン状態を保存',
  'label_log_in'   => 'ログイン',
  'remember'       => true
);
wp_login_form( $args );

このように引数を渡すことで、ラベルやリダイレクト先などを自由に設定可能です。

ログイン・ログアウトリンクの切り替え表示例

<?php if ( is_user_logged_in() ) : ?>
  <a href="<?php echo wp_logout_url( home_url() ); ?>">ログアウト</a>
<?php else : ?>
  <a href="<?php echo wp_login_url( home_url() ); ?>">ログイン</a>
<?php endif; ?>

テーマのヘッダーやフッターにこのコードを入れると、ユーザー状態に応じてリンクが切り替わります。

活用シーン

  • フロントエンドにログインフォームを設置したいとき
  • ヘッダーにログイン/ログアウトのリンクを表示したいとき
  • 会員制サイトなどでユーザー体験を向上させたいとき

注意点

  • wp_login_form()ログイン処理自体は自動で行ってくれます
  • 入力ミスなどのエラーメッセージは表示されません。必要に応じて wp_login_form() の前後でエラー出力の処理を追加しましょう。
  • ログイン成功後の遷移先を指定したい場合は、redirect パラメータを活用してください。

セキュリティに関する注意点

ユーザーがログインできる状態にする場合、特にセキュリティに注意する必要があります。

1. ブルートフォース攻撃対策

wp_login_form() でフロントエンドにログインフォームを設置すると、wp-login.php と同様に攻撃対象になる可能性があります。以下のような対策を講じましょう。

  • reCAPTCHAの導入:Google reCAPTCHAなどでロボットによるログイン試行を防ぐ
  • ログイン試行回数制限:プラグイン(例:Limit Login Attempts Reloaded)で一定回数の失敗後にロックアウト
  • WAFの活用:レンタルサーバーやCDNのセキュリティ機能を有効にする

2. SSL(HTTPS)の使用

ログインフォームを表示するページでは、必ず**SSLを有効化(HTTPS化)**してください。

平文のパスワードが盗聴されるリスクを回避するためにも、SSL証明書の導入は必須です。

3. フォームの出力内容を確認

wp_login_form() はWordPressの標準出力を利用しているため安全性は高いですが、カスタマイズ時に HTML や JavaScript を追加する際は XSS 対策を忘れないようにしてください。

4. ログイン後のリダイレクト先に注意

ログイン・ログアウトのリダイレクト先に外部サイトや信頼できないページを指定すると、オープンリダイレクト攻撃の原因になる可能性があります。

home_url()admin_url() など、信頼できる内部URLを明示的に指定しましょう。

まとめ

関数名目的
wp_login_url()ログインページのURLを取得
wp_logout_url()ログアウト用URLを取得
wp_login_form()ログインフォームをその場に表示

これらの関数を組み合わせることで、WordPressのログイン周りを自由自在にカスタマイズできます。
特にフロントエンドでのログイン体験を改善したい場合は、積極的に取り入れてみてください。

参考リンク