WP-Members ログイン画面カスタマイズ 邪魔な会員登録フォーム削除
WP-Membersの基本設定を終えて、いざ使い始めようと思ったときに
誰もが(?)思う疑問点が、会員限定コンテンツにアクセスした際のこのページ
下部にある会員登録フォームです。
「会員限定エラーメッセージ」と「ログインフォーム」があるのは問題ないのですが、一緒に会員登録フォームが表示されているのはとても違和感がある。
そこで、この部分のみ消そうとしたけど、フィルターフックを色々試して
とても大変だったけどなんとか解決できた、というお話
結論
function.phpに下記を追加する。
add_filter( 'wpmem_register_form', 'my_login_form_filter', 10, 2 ); //ログインフォームの修正 function my_login_form_filter( $form, $action ) { global $post; if(wpmem_is_blocked($post->ID)){ return null; }else{ return $form; } }
解説
大まかな流れは下記になります。
- 会員登録フォームをフィルターフック
- 当該投稿がWP-Membersの会員制限になっているか確認
- 会員制限の投稿であった場合は会員登録フォームをなくし、それ以外はformをそのまま
フィルターフック
add_filter( 'wpmem_register_form', 'my_login_form_filter', 10, 2 );
wpmem_register_formのフィルターフックを使います。これは会員登録フォームを修正する場合に利用するフィルターになります。
会員制限投稿についてもこのフィルターが使われているため、これをフックして条件に一致した場合に会員登録フォームを削除します
会員登録フォームを消す部分
wpmem_is_blockedというメソッドを使っています。これはパラメータとして与えた投稿が閲覧制限されているかどうかを判定し、制限されていればtrueを返します。
trueが返ってくれば冒頭の「閲覧制限されている旨のメッセージ」「ログインフォーム」「会員登録フォーム」が表示されているページということなので、会員登録フォームを削除します。
function my_login_form_filter( $form, $action ) { global $post; if(wpmem_is_blocked($post->ID)){ return null; }else{ return $form; } }
ちなみに、今回はnullを返却することにより会員登録フォームそのものを削除しておりますが
$formを修正すれば、例えば下記のようなボタンを表示することも可能です。
問題点
マイページだけ解決できない。
対策としては、マイページも会員限定コンテンツとすることで対応可能。
プロフィール画面などでも同様の対応は可能ですので、ご不明点があればお問合せ下さい。