WordPressの「Paid Memberships Pro」で会員用ページを作る

(備忘録程度のまとめ方にしております)

以前、プラグイン「WP-Members Membership」を使って会員用ページを作ったが、その後、目的(仕様)が変更になり、作り直す必要性が出てきたので調べた結果、「Paid Memberships Pro」で作ることにした。

WordPressの「WP-Members Membership プラグイン」で会員用ページを作る

目的

  • 会員登録・カード決済・会員専用ページの閲覧の3つが同時に行える

条件

  • 会員の種類は複数
  • 会員のみ閲覧できるページを用意
  • クレジットカード決済が可能(PayPal以外)
  • 領収書の発行が可能
  • その他複数。「Paid Memberships Pro」を改造しないと対応できない条件については、外部エンジニアに依頼

1.使用するプラグイン

「Paid Memberships Pro」。日本語で説明しているサイトがあまりなかったが、どんな機能がついているのか試していくうちに、仕様を満たせると思った。

2.インストール

1)インストールし、有効化する

2)「左メニュー」に「メンバーシップ」が表示される

3.「支払いゲートウェイとSSL」の設定

●カード払いの設定と通貨の設定(「設定」→「支払いゲートウェイと SSL 」)

1)カード決済をテスト環境にするため、以下の設定を確認

2)「通貨」を「日本円(¥)」にし、クレジットカードの種類を選択

3.「会員の種類」の設定

●設定したい会員を作成(「設定」→「レベル 」)

1)「新規レベルを追加」をクリックし、「名前」「金額」(最初の支払い)を入力する。「支払いゲートウェイと SSL 」で通貨を「日本円(¥)」にしたので、¥マークになっている。

2)サブスクリプションにする場合は「定期的なサブスクリプション」にチェックをいれ、「金額」や「サイクル」を入力する

3)会員の有効期限を決める場合は「メンバーシップの有効期限」にチェックをいれ、「有効期限」を決める

4)会員の種類の分だけ繰り返す

4.「メール」の設定

●送られるメールを設定(「設定」→「メール 」)

1)どの時にメールが送られるか選ぶ

2)「メールの内容のカスタマイズ」は、あとで設定する

5.「固定ページ」の設定

●使用するページを設定(「設定」→「固定ページ 」)

1)ページ選択は、このままでOK

2)「メンバーシップアカウント」「メンバーシップ課金」などがファイル名なので、自分の好きなファイル名に変更する

6.日本語の変更

●「Paid Memberships Pro」は、英語表記を「paid-memberships-pro-ja.mo」データで日本語に直している。よって、自分の目的にあってない日本語や、そのまま使用すると合わない日本語を修正する(例:「メンバーシップ」を「会員」とする、「Cancel」が「キャンセル」になっているが「退会」にしたい箇所もある、など)

1)「languages/plugins/」内の「paid-memberships-pro-ja.po」をダウンロードする

2)「POEDIT」で開き、変更したい日本語で検索し、変更する

3)「Cancel」を「キャンセル」でOKの場合と「退会」にしたい場合など、1つの英語表記を2つ以上の日本語表記にしたい時がある。右クリックすると「参照位置」が表示されるので、「paid-memberships-pro-ja.po」の日本語以外の表記にしたい場所を探してphpファイル内の「esc_html__( ‘●●’, ‘paid-memberships-pro’ )」の●●を日本語表記にする(●●が「paid-memberships-pro-ja.po」の英語表記)

4)管理画面の日本語も修正できるので、好きな日本語に変更する

5)「paid-memberships-pro-ja.po」を保存し、「MOにコンパイル」で「paid-memberships-pro-ja.mo」にする

6)「languages/plugins/」に「paid-memberships-pro-ja.mo」をアップする

7.メールの文章を変更する

●管理人と会員に届くメールを設定する

1)アドオンから「Paid Memberships Pro – Email Templates Add On」をインストールし、有効化する(直接phpファイルを変更してもよいが、こちらの方が楽)

2)文章を変更したいテンプレートを選び、変更する

3)WordPressの機能でメールが届くものもあり(メールアドレス変更時など)、それはfunction.phpに追加する。例えばこんな感じ

/*---------------------------------*/
//ユーザーがメールアドレスを変更した際に届くメール本文の変更
/*---------------------------------*/
add_filter( 'email_change_email', 'custom_email_change_email' );
function custom_email_change_email( $email_change_email ) {
$subject = '【' . get_option( 'blogname' ) . '】 メールアドレスが変更されました';
$message = '●●のメールアドレスが、' . "\n";
$message .= "\n";
$message .= '「###EMAIL###」から「###NEW_EMAIL###」へ変更されました。' . "\n";
$message .= "\n";
$message .= 'メールアドレス変更に心当たりがない場合は、●●へご連絡ください。' . "\n";
$message .= "\n";
$message .= '==============' . "\n";
$message .= '署名を入れる
$message .= '==============';

$email_change_email['subject'] = $subject;
$email_change_email['message'] = $message;
return $email_change_email;
}

/*---------------------------------*/
//ユーザーがパスワードを変更した際に届くメール本文の変更
/*---------------------------------*/
add_filter( 'password_change_email', 'custom_password_change_email' );
function custom_password_change_email( $pass_change_email ) {
$subject = '【' . get_option( 'blogname' ) . '】 パスワードが変更されました';
$message = '●●のパスワードが変更されました。、' . "\n";
$message .= "\n";
$message .= 'パスワード変更に心当たりがない場合は、●●へご連絡ください。' . "\n";
$message .= "\n";
$message .= '==============' . "\n";
$message .= '署名を入れる
$message .= '==============';

$pass_change_email['subject'] = $subject;
$pass_change_email['message'] = $message;
return $pass_change_email;
}

/*---------------------------------*/
//ユーザーがパスワードリセットを希望した際に本人に届くメール本文の変更
/*---------------------------------*/
add_filter( 'retrieve_password_message', 'custom_retrieve_password_message', 10, 4 );
function custom_retrieve_password_title( $title, $user_login, $user_data ) {
$title = '【' . get_option( 'blogname' ) . '】 パスワードリセットのURL';
return $title;
}
add_filter( 'retrieve_password_title', 'custom_retrieve_password_title', 10, 3 );

function custom_retrieve_password_message( $message, $key, $user_login, $user_data ) {
$message = '●●のパスワードリセットの問い合わせがありましたのでご連絡します。' . "\n";
$message .= "\n";
$message .= 'リセットURL: <' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . '>';
$message .= "\n";
$message .= " \n";
$message .= 'パスワードリセットに心当たりがない場合は、●●へご連絡ください。' . "\n";
$message .= "\n";
$message .= '==============' . "\n";
$message .= '署名を入れる
$message .= '==============';
return $message;
}


/*---------------------------------*/
//ユーザーがパスワードリセットをした際に管理人に届くメール本文の変更
/*---------------------------------*/
function custom_password_change_notification_email( $wp_password_change_notification_email, $user, $blogname ) {
$subject = '【' . get_option( 'blogname' ) . '】 パスワードリセットの問い合わせ';
$message = $user->user_login . ' のパスワードがリセットされました。' . "\n";
$message .= " \n";
$message .= 'WordPressより自動メール';

$wp_password_change_notification_email['subject'] = $subject;
$wp_password_change_notification_email['message'] = $message;
return $wp_password_change_notification_email;
}
add_filter( 'wp_password_change_notification_email', 'custom_password_change_notification_email', 10, 3 );

8.会員のログイン時にツールバーを消す

●ツールバーは管理者がログインした時だけ表示させる

1)ユーザーの設定でツールバーを消去させることはできるが、一人ひとり設定するのは大変

2)function.phpに以下を追加

/*---------------------------------*/
//管理者以外でツールバー消す
///*---------------------------------*/

function my_function_admin_bar($content) {
return ( current_user_can("administrator") ) ? $content : false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');

9.会員用ページを設定する

1)各ページの編集画面に画像のような設定が表示されるので、限定したい会員を設定する

10.Stripeの設定

1)Stripeでアカウント用意。諸々設定する

2)サンドボックスで試す

3)本番で試す

その他、こまかい変更をした方がわかりやすくなりますが、ここまでである程度の設定はできます。