会員の有料対象者の指定



メンバーシップを拡張する(会員の有料対象者の指定)

よくある「男性は有料で女性は無料」を実装するために
ACFで「有料対象者」タクソノミーをメンバーシップで使えるように追加する。



フィールドグループにも「プランの説明 (無料対象者)」を追加し
チェックしたものが有料対象者となるようにする。




「会員プラン・課金」ページで表示切り替え①


会員プラン・課金ページには、例えば同じGOLD会員でも有料対象者の場合は決済リンクのボタンと「プランの説明 (無料対象者)」が表示されるようにする。そのために下記のようにプログラムを修正する。

PHPコード

//page-plans.php
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$modify = "+30 day";
$membership = "gold";
$admin_url = admin_url() . 'admin-ajax.php';

$membershipsArr = array();
foreach ( wpmem_get_memberships() as $key => $value ) {
	$title = isset($value["title"]) ? $value["title"] : '';
	$has_access = wpmem_user_has_access( $key, $user_id );
	$desc = isset($value["desc"]) ? $value["desc"] : '';
	$desc_free = isset($value["desc_free"]) ? $value["desc_free"] : '';
	$name = isset($value["name"]) ? $value["name"] : '';
	$square_link1 = isset($value["square_link1"]) ? $value["square_link1"] : '';
	$square_text1 = isset($value["square_text1"]) ? $value["square_text1"] : '';
	$square_class1 = isset($value["square_class1"]) ? ' '.$value["square_class1"] : '';
	$square_link2 = isset($value["square_link2"]) ? $value["square_link2"] : '';
	$square_text2 = isset($value["square_text2"]) ? $value["square_text2"] : '';
	$square_class2 = isset($value["square_class2"]) ? ' '.$value["square_class2"] : '';
	$square_link3 = isset($value["square_link3"]) ? $value["square_link3"] : '';
	$square_text3 = isset($value["square_text3"]) ? $value["square_text3"] : '';
	$square_class3 = isset($value["square_class3"]) ? ' '.$value["square_class3"] : '';

	$membershipsArr[$key] = array('title' => $title, 'has_access' => $has_access, 'desc' => $desc, 'desc_free' => $desc_free, 'name' => $name, 'square_link1' => $square_link1, 'square_text1' => $square_text1, 'square_class1' => $square_class1, 'square_link2' => $square_link2, 'square_text2' => $square_text2, 'square_class2' => $square_class2, 'square_link3' => $square_link3, 'square_text3' => $square_text3, 'square_class3' => $square_class3);
}

if ( $user_id ) :
	//memberships
	$html = "";
	if ( !empty($membershipsArr) ){
		$html .= '<ul class="memberships_plan">';
		foreach ( $membershipsArr as $k => $v ) {
			$link_html = '';
			//paid or free member
			$paid_membershipArr = array();
			$post_object = get_page_by_path( $k, OBJECT, 'wpmem_product' );
			if ( $post_object ) {
				$post_id = $post_object->ID;
				$terms = get_the_terms($post_id, 'paid_membership');
				if ($terms) :
					foreach ($terms as $term) {
						$paid_membershipArr[] = $term->slug;
					}
				endif;
			}
			$user_sex = get_user_meta( $user_id,'sex',true);
			if ( in_array($user_sex, $paid_membershipArr)) : 
				$desc = $v["desc"];//有料対象者
				if ( !empty($v["square_link1"]) ) : //$square_link1
					$link_html .= '<a href="#modal" class="modal-btn js-modal' . $v["square_class1"] . '" data-src="' . $v["square_link1"] .'">' . $v["square_text1"] .'</a>';
				endif;
				if ( !empty($v["square_link2"]) ) : //$square_link2
					$link_html .= '<a href="#modal" class="modal-btn js-modal' . $v["square_class2"] . '" data-src="' . $v["square_link2"] .'">' . $v["square_text2"] .'</a>';
				endif;
				if ( !empty($v["square_link3"]) ) : //$square_link3
					$link_html .= '<a href="#modal" class="modal-btn js-modal' . $v["square_class3"] . '" data-src="' . $v["square_link3"] .'">' . $v["square_text3"] .'</a>';
				endif;
			else ://無料対象者の情報
				$desc = $v["desc_free"];
			endif;

			$prod_timestamp_meta = get_user_meta( $user_id, "_wpmem_products_".$v["name"], true);
			$prod_timestamp = '';
			if ( !empty( $prod_timestamp_meta && $prod_timestamp_meta != 1 ) ) {
				$dt = new DateTime();
				$dt->setTimestamp($prod_timestamp_meta);
				$prod_date =  $dt->format('Y-m-d H:i:s');
				$prod_timestamp = '有効期限:' .$prod_date;
			}
			$has_access = $v["has_access"] ? '有効' : '無効';
			$class = $v["has_access"] ? ' class="has"' : ' class="invalid"';
			$html .= '<li' . $class . '><div><h3 class="pageH3">' . $v["title"] . '</h3><p class="has_access">' . $has_access . '</p></div>';
			$html .= '<p class="desc">' . $desc . '</p>';
			$html .= '<p class="timestamp">' . $prod_timestamp . '</p>';
			$html .= $link_html;
			$html .= '</li>';
		}
		$html .= '</ul>';
	}
	echo $html;
	//modal_html
	$modal_html = '<div id="modal" class="modal-content">
<iframe id="squareframe" src="" width="100%" height="1400px" scrolling="no" frameborder="0" data-uid="' . $user_id .'" data-modify="' . $modify .'" data-membership="' . $membership .'" data-admin_url="' . $admin_url .'"></iframe>
</div>';
	echo $modal_html;

「会員プラン・課金」ページで表示切り替え②


「会員プラン・課金」ページに男性がログインした時と女性がログインした時に表示切り替えが出来ているのが確認できるはず。

男性(有料)の場合


女性(無料)の場合