WP-Membersの閲覧制限で、カスタムフィールドも非表示にする方法

WordPressで会員制サイトを作るためのプラグイン「WP-Members」、めっちゃ便利ですねこれ。

会員登録機能も簡単に作れて、記事に閲覧制限もかけられる。

ただし、閲覧制限で非表示になる部分は投稿コンテンツ(the_content();)のみなので、カスタムフィールドを使っている場合、カスタムフィールドにも閲覧制限設定を実装する必要があります。

そんなに難しくないので、サクッとやっちゃいましょう。

実装

まず、「記事に閲覧制限をかけているかどうか」を取得します。下記を記事用テンプレートに記述。

閲覧制限がかかっていると、”$block_flag”に”1″が、かかっていないと”0″が入ります。

続いて、カスタムフィールドの出力を制御します。

ややこしい言い回しになってしまいましたが、要するに「閲覧制限をかけていない場合か、ログインしている場合に表示される」というわけで、この中に書いたものは、閲覧制限で非表示になります。

これを、カスタムフィールドが出力される場所ごとに書いてもいいんですが、面倒だし見づらくなるので、まとめちゃいましょう。

例えばこんな感じ

これで、「ログインしていないとそもそもカスタムフィールドの値を取得しない。カスタムフィールドの値がなければ、出力もされない」というロジックになりますので、コード量を大幅に削減でき、見やすくなります。

この方法がまかり通らない場合(リピーターフィールド等)は、仕方ないので別個対応してあげましょう。

以上、現場からでした。

フォローする