メンバーシップと有効期限、閲覧制限




メンバーシップ プロダクト(会員ステータス)とは

メンバーシップ プロダクトとは会員ステータスのことで分かりやすく言うと、会員の種類をFree会員、Gold会員、Platinum会員のようにグレードに分け閲覧や機能制限を行うための仕組み。


メンバーシップ プロダクトを作る

WP-Membersにはメンバーシッププロダクト(会員ステータス)の機能があるので無料会員、有料会員用のメンバーシップを作ることが出来る。
例えば有料会員用メンバーシップを作ると、有料会員しか見れないページを設定することが可能になる。

運用によるがよくある有料化は下記の3つが考えられる。今回は月額課金制を実装してみる。
・月額課金制+有料オプション
・ポイント課金制
・有料会員(広告無し)と無料会員(広告有り)


【メンバーシップ プロダクトの作り方】

①WP-Members オプションの「その他の設定」の「メンバーシップを有効化」をチェックし保存する


②管理ページ左メニューに「メンバーシップ」カスタム投稿が追加される
③最初に無料会員用のメンバーシップを作る


④次に有料会員用のメンバーシップを作る


【メンバーシップの有効期限】

メンバーシップには各会員の有効期限が設定出来る。
メンバーシップを編集の「その他の設定」で期限 (オプション)に例えば「1」「月」と入力してから、ユーザー登録してみるも特に何も変化がなかった。
またその下のチェックボックス項目もよく分からないので使わないこととする。
「当初の有効期限を起点に期限を更新する」
「有効期間を固定する (1月1日~12月31日や9月1日~8月31日など) 」

下記の2つのメタキーに直接期限を設定することで有効期限が設定できる。
“_wpmem_products_gold”→タイプスタンプ
“_wpmem_membership_expiration_gold”→日付

2つのメタキーで有料会員の期限を設定する

$modify = "+30 day";
$now = new DateTime();
$now2 = $now->modify($modify);
$newTimestamp = $now2->getTimestamp();
$mem_exp = $now2->format('Y-m-d');
update_user_meta( $user_id, "_wpmem_products_gold", $newTimestamp );
update_user_meta( $user_id, "_wpmem_membership_expiration_gold", $mem_exp );

ユーザー一覧にも会員期限が表示される


今回は有料会員の決済成功時にタイプスタンプと日付をアップデートするように実装するが、ユーザー編集ページで直接、期限をアップデートすることも可能だ。


【注意】操作は「アップデート」を選択して「ユーザーを更新」をクリックしないと期限をアップデート出来ない!

【メンバーシップによる閲覧制限】

例えば特定の固定ページを有料会員限定にアクセスを制限したい場合は 編集ページの「固定ページ制限」で限定にしたいメンバーシップを選択する。


有料会員メンバーシップが有効時に閲覧出来る


有料会員メンバーシップが無効時は閲覧出来ない


メンバーシップ(会員ステータス)を表示する

会員ステータスが追加できたので会員プロフィールに会員ステータスを表示するようにする。
会員の期限が有効の場合は「有効」と無効の場合は「無効」と表示される。

WP-Members APIを使って会員ステータスを表示するコード

//page-profile.php
//memberships
$membershipsArr = array();
foreach ( wpmem_get_memberships() as $key => $value ) {
	$has_access = wpmem_user_has_access( $key, $user_id );
	$membershipsArr[$key] = array($value["title"], $has_access);
}
if ( !empty($membershipsArr) ){
	$html .= '<ul class="memberships">';
	foreach ( $membershipsArr as $k => $v ) {
		$has_access = $v[1] ? '有効' : '無効';
		$html .= '<li><p class="title">' . $v[0] . '</p><p class="has_access">' . $has_access . '</p>';
		$html .= '</li>';
	}
	$html .= '</ul>';
	$html .= '<p class="but2p"><a class="but2" href="/#/">会員ステータス・課金管理</a></p>';
}

会員プロフィールに会員ステータスが表示出来た!