会員の有料対象者の指定
メンバーシップを拡張する(会員の有料対象者の指定)
よくある「男性は有料で女性は無料」を実装するために
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;
「会員プラン・課金」ページで表示切り替え②
「会員プラン・課金」ページに男性がログインした時と女性がログインした時に表示切り替えが出来ているのが確認できるはず。