WP-Membersでカテゴリーやアーカイブの一覧への対応[WordPress]

wpmem_eyecatch

会員専用サイトや閲覧制限のあるサイトを作る際に「WP-Members」というプラグインを使うと便利です。
今回の案件は、通常の投稿を会員専用とし、カスタム投稿を作ってこちらは一般向けの情報を載せました。

使用環境

WordPress 4.7.5
テーマ:Enfold 4.1


プラグイン:WP-Members 3.1.8.1

WP-Membersはそんなに難しくないです(たぶん)。
参考にさせていただいたページを記述しますので、読み込んでみてください。

前述しましたが、今回は投稿をすべて会員専用にしてしまいます。
また、メンバー登録もないので、WP-Membersの設定は至極シンプル。

wpmem_setting

「Posts」をブロックしただけです(汗)。
あと「ダイアログ」タブを開いて、適宜メッセージを変更しておくといいかもしれませんね。


さて、今回はここからが本題なのです。

WP-Membersで、投稿をブロックして、投稿の一覧を載せる固定ページもブロックします。
なんにも考えなければこれでもいいんですが、大概はサイドバーにカテゴリーのウィジェットやアーカイブのウィジェットを載せたりするじゃないですか?
こんな感じで…

wpmem_logout

赤枠で囲んで部分がカテゴリーのリストです。
こんな感じで表示して、カテゴリーを選んでしまうと、そのカテゴリーの内容が一覧で見えてしまうんですね。
月別アーカイブの一覧なども同様に表示されてしまいます。
これってちょっとマズくないですか?

まあ、CSSを調整して、カテゴリーやアーカイブの一覧の際は、タイトルだけにしてコンテンツ内容を表示しないという手もあるとは思うんですが、今回は(クライアントの手前?)カテゴリーやアーカイブの一覧の場合も内容をすべて表示したかったんです。

しかーし、だがしかーし
同じように悩んでいる人が世の中にはいるもんです!

もう1つ、カスタム投稿の条件分岐も参考にさせていただきました。

*↑ Mac使いの備忘録 iRecさんの記事を参考にさせていただきました。


2つのページを参考にズボラな僕が考えてみた備忘録です。
今回も毎回お世話になっているテーマ「Enfold」をカスタマイズしていきます。

includes/loop-index.php の 15行目あたりの if (have_posts()) : の直後に

…と、ログイン状態かつカスタム投稿かどうかのチェックする[if文]を入れておきます。
そうすることで、カスタム投稿なら通常通りの表示を行います。
*あっ、言ってなかったですが、カスタム投稿の投稿タイプ名が[open_info]です。

 

で、ちょっと本筋と外れますが、表示を整える為に1つ[div]をかましておきます。
87行目あたりの echo “<article class='”.implode …で始まるコードの直前に

と追加し、
291行目あたりの echo “</article>”; の直後に

と記述して、[div]を閉じておきましょう。

 

本筋に戻ります。
294行目あたりの endwhile; の直後に

という感じで、通常の投稿の場合、ログインしていないとログインフォームを表示するように変更しました。
このあとは、else: に繋がります。

実際に機能した画面はこんな感じですかね。

wpmem_logout2

まあ、ログインしていない時は、投稿(会員用)のカテゴリーやアーカイブのウィジェットを表示しないという方法が簡単かもしれませんけどね。

すべての案件にベストな答えは与えられなくとも、どこかの案件にベターな答えは用意したいって感じですかね。ワールド・ビジョン・ジャパン的な?…知らんけど。