自分のポートフォリオサイトを作って、クライアント限定で記事を公開しようと思ってWordPressに「Simple Membership」を導入しました。
諸先輩方の記事を参考に初期設定を完了させましたが、限定記事からのログインフォームでログインしようとしてもログインできない問題に直面しました。
一晩悩んだ結果自己解決しました。同じような問題で悩んでいる人もいましたので、私の解決方法を記録しておきます。
Simple Membership導入の目論見
WordPressプラグインで、主な目的としては会員制サイト構築用のユーザー管理用プラグインです。ユーザーレベルによって見られる記事を変えていくという趣旨です。
これを利用して、一般公開できない記事でも特定のクライアントにパスワードを発行し、過去の実績などを見てもらおうというのがSimple Membershipを導入する目論見です。
Simple Membershipのファイル構成を確認する
Simple Membershipをインストールすると5つの固定ページが同時にインストールされます。
- JoinUS
- Registration
- Member Login
- Password Reset
- Profile
どのページもSimple Membershipのショートコードで書かれたものです。問題のログインフォームは、3.Member Loginという固定ページで、[[swpm_login_form]]というショートコードで書かれていました。
このショートコードはどのファイルで制御されているのか探ってみたところ、Simple-membership/views/login.phpというファイルだということがわかりました。
login.phpを確認してみたところ、7行目からログインフォームが記述されています。
なんと、8行目のformタグのaction要素が空欄でした!これでは、どうやってもログインしようがありません。
Simple Membershipのlogin.phpを編集する
login.phpのフォームのaction要素に自分のサイトを指定すればログインできると思ったのですが、絶対パスで指定するとなんとなく不具合が出そうだったので、自分のサイトを指定するショートコードを使うことにしました。
修正するファイル: /wp-content/plugins/simple-membership/views/login.php
login.phpの8行目を下記のように修正します。修正する前にはlogin.phpのバックアップは必ず取るようにしてください。
修正前:action=””
<form id="swpm-login-form" name="swpm-login-form" method="post" action="">
修正後: action=”<?php echo wp_login_url(); ?>”
<form id="swpm-login-form" name="swpm-login-form" method="post" action="<?php echo wp_login_url(); ?>">
今回action要素に記入したWordPressの関数wp_login_url()について詳しく知りたい方は下記をご参照ください。
関数リファレンス/wp login url
ちゃんと使うにはまだまだカスタマイズが必要
取り合えす、ログインできない問題は解決しましたが、Simple Membershipを、ちゃんと使うには手を加えなければならない点がいくつかあるようです。
固定ページのJoinUSは標準では英語で書いてあるので日本語に直さなければいけません。そもそも英語で自由にカスタマイズしてくださいと表記しています。このままではクライアントに見せるどころではありません。
新規会員登録画面や、その後のリダイレクトも修正が必要です。しかしながら、私が考えている使い方では無料会員は必要なさそうなので、優先順位としては低めです。
まとめ
私の場合は、これでうまくいきました。最初はプラグインの不具合が原因と考えて、似たようなWP-menbershipに乗り換えようと思ったのですが、やはりSimple Membershipのほうが使い良さそうなので、諦めきれませんでした。
この記事がお役に立つことができれば幸いです。
コメント
はじめまして。地獄に仏とはこのことだと思うくらい本当にこの記事で助かりました。コメントは苦手なのですが一言、お礼を申し上げたくて書いております。
プラグインのフォーラムで同じ症状がでていて、この記事を書かれたころから随分と経過しておりますが最近ダウンロードした私も同じ状態。こちらの記事がなければ、どうしようもありませんでした。本当にありがとうございました。
コメントいただきありがとうございます。
お役に立てたなら、記事を書いいた甲斐があります。
温かいお言葉をいただき今後の励みになりました。
こちらこそありがとうございます。