事例紹介(復旧・実戦系)

WP-Membersの標準機能をさらに強化したお話

WP-Membersの標準機能をさらに強化したお話
WEBさん
WEBさん

WP-Members の標準だけで会員サイトを組むと、後で「あと一歩のカスタマイズ」に必ず詰まります。最初に拡張ポイントを押さえておくと後が楽です。

※ 本記事は2023年当時の事例です。 現在の WordPress 6.x / PHP 8.x 環境では推奨手順が変わっている可能性があります。最新の対応方針は 復旧サービス または ご相談窓口 から確認ください。
WordPress で会員制サイトを作成する場合、WP-Members というプラグインが利用できます。

WordPress にはもともとユーザー管理の仕組みがあります。複数のユーザーアカウント作成や権限設定など、各種制御が可能です。

WP-Members は、WordPress 標準のユーザー管理機能を強化し、ユーザー登録やログインの仕組みを提供するプラグインです。

ただし、このプラグインの標準機能だけでは満足できる会員制サイトには仕上がりません。

今回は、ユーザー体験をさらに向上させる便利な PHP コードを紹介します。

ココナラで会員制サイトの制作を受託した際に実装した PHP コードを、備忘のためまとめました。やや雑な記述かもしれませんが、一読いただけると嬉しいです😌

はじめに

プラグインのインストール・設定について、詳しくまとめてあるサイトがあります。そちらをご覧ください (さっそく雑です🤣)。

基本的な設定方法からカスタマイズまで解説されています。

それでは、上記サイトで解説されていない便利な PHP コードを紹介していきます。

ログイン時

会員登録時に自動ログインする機能

会員を新規登録した直後に、ログイン情報の入力を求められたらどう感じますか?

めんどくさいですよね❓ そう感じさせない処理を、以下に示します。
function the_reg_redirect()
{
	if ( isset( $_POST ) && ! empty($_POST) ) {
		$user_data = "";
		if ( isset($_POST['user_email']) ){
			$user_data = get_user_by('email', $_POST['user_email']);
		}

		if ( $user_data ) {
			$user_id = $user_data->ID;
			wp_set_auth_cookie( $user_id, false, is_ssl() );	//ログインさせる
			$ref = $_SESSION['gopage'];
			wp_redirect( $ref );	//任意のページへリダイレクト
			exit;
		}
	}
}
add_action( 'wpmem_register_redirect','the_reg_redirect' );
PHP

ログイン後の管理バーを非表示にする機能

ログイン直後に、WordPress 標準の管理バーが表示される場合があります。

余分な情報を見せないようにする処理を、以下に示します。
function hide_admin_bar(){
	$user = wp_get_current_user();
	if (isset($user->data) && !$user->has_cap('edit_posts')){
		show_admin_bar( false );
	}
}
add_action( 'after_setup_theme', 'hide_admin_bar' );
PHP

ログイン後に元のページに戻る機能

ログイン直後は、引き続き元のページを閲覧したい場面があります。

そのときの処理は、こちらです。
function afterlogin_function($redirect_to) {
    global $user;
    if ( in_array( $user->roles[0], array( 'subscriber') ) && isset($_SERVER['HTTP_REFERER']) ) {
        $redirect_to= $_SERVER['HTTP_REFERER'];	//ログインページにジャンプする前のページが入ります
    }
    return $redirect_to;
}
add_action('login_redirect', 'afterlogin_function', 10, 1);
PHP

ログアウト時

ログアウト後にリダイレクトする機能

ログアウト時に「個別に用意したページ」や「トップページ」へリダイレクトさせたい場合の処理です。
function my_logout_redirect(){
	return 'リダイレクト先のURL';
}
add_filter( 'wpmem_logout_redirect', 'my_logout_redirect' );
PHP

まとめ

プラグイン「WP-Members」の基本設定やカスタマイズでは実現できない部分を紹介しました。

本プラグインと組み合わせれば、より UX を高めた会員制サイトを作れるはずです。

もし「分からない」「動かない」「エラーが出る」など困った場合は、WEB 先案内にご相談ください m(_ _)m
WEBさん
WEBさん

会員機能を入れたあとに「この項目を増やしたい」「この権限を分けたい」が出てきたら、一度設計を見直すタイミングかもしれません。

コメントを残す

メールアドレスは公開されません。* は必須項目です。

CAPTCHA