それでは、全3部構成の最後になる第3部として、
第3部 会員管理プラグイン「Simple Membership」の会員限定記事に関する課題
を書いていきます。

ちなみに、全3部構成になっています。

第1部 会員管理プラグイン「Simple Membership」の使い勝手
第2部 会員管理プラグイン「Simple Membership」の拡張プラグイン「Form Builder Addon」について
第3部 会員管理プラグイン「Simple Membership」の会員限定記事に関する課題

全3部構成の最後になる第3部では、
恐らく「Simple Membership」を使っていく上で
課題となる内容を書いていきます。

「Simple Membership」の公開範囲限定機能

「Simple Membership」のメイン機能に、
WordPressで作成した記事を
会員専用にするかどうかを設定できる機能があります。

この機能を使った会員専用記事を見ようとした場合、
ログインしてない場合は、見れなくなります。
(ログインページに飛ばされます)

また、記事毎に、会員レベル別の公開範囲を設定する事も可能なので、
Aの記事は、会員レベル1と会員レベル2の会員のみが見れる
Bの記事は、会員レベル2の会員のみが見れる
といった使い方が出来ます。

「Simple Membership」がサブスクリプションに対応しているので、
会員レベル1=無料会員
会員レベル2=定期購入している有料会員
といった使い方が出来るのが、大きいかもしれませんね。

目次へ戻る

公開範囲限定機能が大量件数に耐えられない

結構便利な会員レベルに紐づく公開範囲限定機能なのですが、
実は、大きな課題がありました。

恐らく、使い始めの公開範囲限定記事が少ない時は、
殆ど影響が出ないと思います。

っというのは、この「公開範囲限定記事かどうか」という判断基準となる情報が、
wp_optionの1レコードの1カラムの中に
シリアライズされた形で格納されてるという仕様が
記事が少ない場合は影響しないからです。

記事を閲覧した際、その記事が「公開範囲限定記事かどうか」を
「Simple Membership」の判定関数でチェックしているのですが、
その時、シリアライズされた配列の中を in_array で探しています。

どの記事の閲覧でもチェック処理が動くので、
公開範囲限定記事数が増えれば増えていく程
どんどんサイトが重くなっていきます。

目次へ戻る

大量の公開範囲限定記事への対処方法

■対処方法として
そこで今回、以下の対処方法を実装しました。

1.「Simple Membership」の限定公開判定用カテゴリを追加
2.限定公開判定では、限定公開判定用カテゴリの投稿かを見るように修正

「Simple Membership」の標準機能に、
特定のカテゴリの投稿を限定公開にするという機能があります。

そこで、限定公開記事というカテゴリを作り、
限定公開の投稿記事を保存する際、
そのカテゴリを記事毎に紐付けるように実装しました。

また、フロント画面側では、「Simple Membership」の判定関数を使わず、
その記事自体が限定公開判定用カテゴリかどうか判定するようにしました。

これにより、 in_array での処理を使わなくなるので、
かなり軽い判定処理になります。

実際にこの実装に変えた事により、
サイト全体がかなり軽くなりました。

他にも対処方法はあるかもしれないのですが、
「Simple Membership」をサイト利用される方は
まず、この課題の対処方法を検討して頂くのが必須かと思います。

■さいごに
ここまで色々書きましたが、「Simple Membership」は
結構良く出来たプラグインだと思います。

決済代行会社にストライプを利用したのですが、
サブスクリプション連携の部分での不具合もありませんでした。

今回特に書いてませんが、
会員登録時のメール認証機能による
会員登録機能まで付いてます。

もし、WordPressでサブスクリプションのサイトを作るのであれば、
選択肢の1つとしてオススメ出来るプラグインだと思います。

この記事をシェアする:

この記事へのコメント:

    kk2019-07-19 07:02:18 返信
    日々、参考にさせていただいてます。
    下記の方法について、手順等を詳しくご教示頂けませんでしょうか?

    >「Simple Membership」の標準機能に、
    特定のカテゴリの投稿を限定公開にするという機能があります。
    そこで、限定公開記事というカテゴリを作り、
    限定公開の投稿記事を保存する際、
    そのカテゴリを記事毎に紐付けるように実装しました。

    また、フロント画面側では、「Simple Membership」の判定関数を使わず、
    その記事自体が限定公開判定用カテゴリかどうか判定するようにしました。
      アッキー
      アッキー2019-07-19 17:36:01 返信
      kk様

      コメント頂き、ありがとうございます。

      実装対応したエンジニアが別にいるのですが、対応前に、
      2,3日かけて「Simple Membership」の中身を解析致しました。

      実際の対応には、管理機能設定だけで手順を完結出来ない為、
      プログラミングの知識、及び、「Simple Membership」の中身の理解が
      どうしても必要になってしまいます。

      詳細な実装内容をご回答させて頂く事が困難な為、
      大まかな対応概要をご説明させて頂きます。


      【①】限定記事用にカテゴリを1つ作成。

      【②】限定公開にしたい全記事に対して、WordPressの関数を使って
         ①のカテゴリを紐付けるDB更新を実行。

      【③】投稿の新規登録や更新時、限定公開にする投稿の場合は、
         ①のカテゴリと紐付く様にWordPressのフックで更新処理を追加。

      【④】フロント側で投稿を参照する際、「Simple Membership」の関数ではなく、
         WordPressの標準関数を使って、個々の投稿が①と紐付いているかで
         限定公開記事か判別するように修正。
東日本橋の制作・開発会社 プレスマンのスタッフブログ