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;
    }
}

解説

大まかな流れは下記になります。

  1. 会員登録フォームをフィルターフック
  2. 当該投稿がWP-Membersの会員制限になっているか確認
  3. 会員制限の投稿であった場合は会員登録フォームをなくし、それ以外は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を修正すれば、例えば下記のようなボタンを表示することも可能です。

問題点

マイページだけ解決できない。

対策としては、マイページも会員限定コンテンツとすることで対応可能。

コメントを残す