Home > blog > wordpressで非公開コミュニティサイトを作る(2)ユーザーレベルで表示内容を変更+plugin“Category Access”

wordpressで非公開コミュニティサイトを作る(2)ユーザーレベルで表示内容を変更+plugin“Category Access”

  • 2009-04-20 (月) 7:30
  • blog
  • | |
Google Adsense

wordpress!

認証は出来たので、今度はログインしたユーザーの権限をあらわすユーザーレベルで表示を変えたり、見る権限がない記事を表示しようとした場合は別のページへ飛ばす方法を探っていく。

wordpress界(?)ではWordBenchという立派なソーシャルコミュニティが出来たらしく話題になっているが、残念ながらあそこまで立派なものはちょっと難しそうだし、そもそもwordpressではなくwordpressMUを使っていたり、一人一人のblogまで必要じゃないんでとりあえずこのままwordpressをベースとして考えていく。

WordBench

通常ユーザーによって見せる見せないをwordpressで選択する場合、記事投稿時にパスをつけたり非公開設定をつけたりという事はデフォルトの機能として備わっている。
今回もそれを使えばこんな面倒な事をする必要はないのだが、下記理由によりその手が使いにくい。

  1. wordpressになれて無い(かつ面倒事が嫌いな)ユーザーも記事投稿を行うため、記事書くたびに非公開やパス設定させるのに無理がある
  2. 体験中の人でも見れる記事・ページのほうが更新頻度が少なく、公開範囲の狭いほうをデフォルトとしたい

といった諸般の事情から、基本的な流れとしては全部の記事を見る権限の無いユーザーがログインしたら、そのユーザーレベル専用のフロントページへ飛ばす、見る権限の無い記事へ飛んだらフロントページへ戻す、サイドバーなり検索結果等で見る権限のない記事は非表示もしくは本文が見れないような感じでいこうかなと画策。

二つの対処法

上記の条件を満たすために、pluginによる制限とphpであれこれやるという二つの方法で対応していこうと考える。
最初は全てphpをいじってやろうと思っていたし、後々の事を考えるとそのほうが安全なのだが、これが俺程度のスキルではちょっと難しく、数日ハマった後pluginで出来る事はやってもらおうという方針に変更。
偶然ちょうど目的に合ったpluginを見つけたというのも大きいが。

カテゴリー単位で閲覧制限をかけれるplugin “Category Access”

David Coppit's Code Page

で、そのpluginがCategory Access

試したwordpressのヴァージョン
2.7.1
試したヴァージョン
0.8.2
対応するwordpressの最新バージョン表記
2.3.X, and not prior versions
auther page
David Coppit’s Code Page

wordpressといえば、という事でこちらから情報ゲット。
Category Access – わーどぷれすっ!

分かりにくいのだが、Code Pageってところにこの開発者の作ったpluginとかがあれこれ置いてあるんで、下のほうにあるCategory Access 0.8.2ってリンクからDLする。
後はwordpressのpluginのインストール項目からDLしたzipを選択すればOK。

このpluginは公式Plugin Directoryにも登録されてないし、まして最終更新日が2007年と、まず動かねーだろうなぁと思っていたが、多少怪しい部分はあれどすんなり動いた。
今後wordpressの大幅なアップデートに際しても動き続けれるかは不安だが、2.3時代から2.5、2.7と乗り気って動いている事になるので、案外いけるんじゃないかなと思っている。(ソースを見ろと言う話)
最悪動かなくなってもこのpluginのソースを参考に自力で作り直すという荒業も残っている、実力不足で不安だが今の時点で動くお手本があるのは心強い。

なんていう話はともかくpluginについて。
このpluginはアクティブにするとwordpressの管理画面の設定に専用のオプションページ、さらに各ユーザーページの下部に幾つかの項目を追加する。

管理画面

Category Access

Category Access for:
New UsersAnonymous Usersの二種から選択。
Anonymous Usersはログインしていないユーザーを意味する、これの用法はシンプル。
今回俺が使うのはログインしたユーザーの権限で見れる範囲を指定なので、今回はNew Usersを選択。
実はNew Usersが何を表すかよくわからないのだが、恐らくはユーザーを新規登録した際、デフォルトで割り振られる権限の事なんだと思う。(詳細後述)
その下に幾つか出ているだろうチェックボックスは現在存在するカテゴリーにあたり、チェックを入れたカテゴリーは公開してもOK、という感じ。
Check all categoriesボタン・Uncheck all categoriesボタン
上に表示されるカテゴリーを全てチェックする・全てのチェックを外すボタン。カテゴリー数がやたら多い場合に使えるかもしれない。

Protected Posts in the Blog

blogの閲覧制限の設定
Protected Posts in the Blog

Hide entire post.
閲覧限定されたユーザーから、記事のタイトル・本文・コメント本文を隠す。ただし公開用カテゴリーアーカイブページでの“最新の投稿”等では非公開カテゴリー記事のタイトルが表示されてしまう。テーマの作り方次第でどうにかなるとは思う。
Show title, but a private message for the body text.
閲覧限定されたユーザーから、記事のタイトルのみを表示し、本文・コメント本文を隠す。本文の代わりに指定したメッセージ(private post message)を表示することも出来る。
Show a private message for the title and nothing for the body text.
閲覧限定されたユーザーから、記事のタイトル・本文・コメント本文を隠し、タイトルの代わりに指定したメッセージ(private post message)を表示する。表示出来ない記事を開くとタイトルの他に同じく指定メッセージが妙な位置に配置される。
The private post message:
上記選択肢で三項目目を選んだ際、タイトルの代わりに表示させるメッセージを入力する
Show a padlock icon on the private post message.
private post messageを表示する際、南京錠のアイコンを表示する
Consider a message to be visible if the user can view any of its categories (rather than all of its categories).
このチェックボックスをONにすると、1つの記事が複数のカテゴリーに属する場合、そのうち1つでも公開OKなカテゴリーが含まれていれば公開する。

Protected Posts in Feeds

フィードの閲覧制限の設定
Protected Posts in Feeds

Show the title and links (but not the summary or content) instead of hiding posts.
非公開の投稿を隠す代わりに、タイトルとリンクのみ表示させる。
これはcookieによるログイン判別をしているので、cookieを読み取らないfeed reader等を制限する事が難しいため、ならfeedのタイトルとリンクは隠さずに吐き出して、アクセスしてきたら閲覧制限がかかるよ、的な手なんだと思う。なので基本はチェックを入れておく。

The Category List

The Category List
閲覧許可をしていないカテゴリーを表示するかとか、表示出来ないカテゴリーに南京錠のアイコンを表示するか、といった選択肢なのだが、これは働いてなく、チェックを入れてアクセスするとエラーか何かが出て表示されなくなってしまう
ちなみに表示されるメッセージは以下の通り。

Unknown column 'wp_term_relationships.term_taxonomy_id.term_taxonomy_id' in 'where clause'

内容からいって、このpluginが作られた当時とDBの構成が変わっているため、わからんカラムが存在するよとか、そういう事なのかな。

下の2つのボタン

Update OptionsReset All Options

特筆する必要もない、設定更新とリセットボタン。
なんだけど、似たような位置に配置されているんで、クセで設定変更したあと一番したのボタン…を押すと見事にリセットがかかったりする。

ユーザーページ

user page options

Category Accessという項目が各ユーザーページの項目に表示される。ちなみに管理者のユーザーページには表示されない。

ここには現存するカテゴリーとcheck all、uncheck allのボタンがある。ここで個別ユーザーごとに公開範囲を指定する事が出来る。

実際の動作

New Usersでユーザーを新規登録すると、設定をいじってなければ通常権限は購読者になる。
この状態だと当然デフォの設定のまま、指定したカテゴリーの記事しか閲覧する事が出来ない。
当初New Usersとはこのデフォルトで割り振られる権限の事だと思っていた。
ところがこの新規登録したユーザーの権限を購読者の上の投稿者にしても、さらにその上の作成者にしても閲覧制限がかかったままなのだ。
その上の編集者にしてやっとAs a category manager, this user can view all categories.というメッセージがユーザーページのカテゴリー選択部分に表示され、全カテゴリーを閲覧できる状態になった。(勿論管理者権限になれば当然全部観れる)
そして編集者権限から下に再度変更すると、カテゴリーのチェックボックスが復活するのだが、このチェックが全て外れているのだ!
つまり常にではないものの、このpluginを使用した状態で権限をいじる場合には個別の手直しを前提で使う必要がある事になる。
権限を上下に頻繁に変更する事は俺の今回の想定利用環境ではありえないが、ちょっとこれは面倒な気がしてしまう。
カテゴリーが大量にあって、細かく分類している場合なんかは結構しんどそう。

なので、このpluginは複雑大量のカテゴリーをユーザーごとに細かく閲覧設定したい、みたいなヘビーなユーザー管理には向かない。
今回の俺の用途のように、低い権限だとこのカテゴリーしか見れないよ、程度なら耐えれる程度のものだろう。(古いしね)

自力で権限・ユーザーレベルで振り分け

さて上記pluginを利用すれば記事(post)の保護は出来る、けどページにはカテゴリーが無いためpluginではどうこう出来ない。
さらにトップページなりサイドバーなりで閲覧出来ないんだから本来見える必要もない項目も出てくる。(カテゴリー1つ分しか閲覧許可出さない場合、カテゴリーリストを表示する部分は不要、だとか)
アクセス時に最初に飛ばしたい、体験者用ページなんかも作るかもしれないし、既に説明したとおり、ちょっとpluginが不安定なんで今後の事も考えると、やっぱり自力で振り分けする方法も把握して、部分的にでも使っていく必要がありそう。

ユーザーレベルを取得する

これをするには当然、今ログインして見てる人の権限を取得しないといけない。

権限っていうとwordpressの管理画面で言う管理者とか編集者とかの事なんだけど、実は内部処理的には0~10の11段階のユーザーレベルってのが設定されていて、こっちを使って判別する。
ちなみに管理者はユーザーレベル10、閲覧者はユーザーレベル0、と内部で振られていて、数字が上がるほど権限が増える感じぽい。(ここで言う権限は使う事が出来るwordpressの機能、設定の数や種類の事)

で、見てる人のユーザー情報を取得するにはglobal $user_levelとするだけで取得できる。1

実際に振り分けてみる

仮に管理者をユーザーレベル10、一般メンバーを編集者とするとユーザーレベル7、で体験中のメンバーを閲覧者でユーザーレベル0と設定する。(デフォなんで設定する必要ないんだけど)
このケースで閲覧者とその他、で処理を分けたい場合こんな風にすればいいっぽい。

<?php
global $user_level;
if ( $user_level > 0 ) {

//正式メンバーの人用の処理

} else {

//体験中のメンバーの人用の処理

}
?>

あら簡単。
これで例えば体験中の人にはサイドバーのこの項目は表示させなくていいな、とかそういう事がテーマ内で出来るようになるね!

トップページを変えたい場合のやり方

トップページを体験用と一般用に分けたい場合のやり方もついでにメモっておく。
と言っても既にユーザーレベルで分岐できているんで終わったようなものなのだが。

header.phpの一番上に以下のコードを挿入すればいい。

global $user_level;
if ( is_home() && $user_level == 0 ) {
        wp_redirect( get_option('siteurl') . '飛ばし先のパス' );
}

頑張ってheader送信しようとあれこれやってたんだけど、んもう全然出来なくて半泣きであれこれ調べてたらwp_redirect()なんていう関数を発見したのだったりする。

Function Reference/wp redirect « WordPress Codex

Redirects the user to a specified absolute URI.とあるように、絶対URIで書く必要があるようだ。

という事で、前回のアクセス制限のコードとあわせてheaderの頭に以下のコードを突っ込む事になる。

<?php
if ( !is_user_logged_in() ) auth_redirect();
global $user_level;
if ( is_home() && $user_level == 0 ) wp_redirect( get_option('siteurl') . '飛ばし先のパス' );
echo '<?xml version="1.0" encoding="'. get_bloginfo('charset') . '" ?>';
?>

関数化されているとはいえリダイレクトには変わらないようなので、echoより先に。

後は飛び先となるページを作り、それ用のテンプレートを用意すればいい。

  1. 実はこれを知るまでずっとget_currentuserinfo()を利用していて、この記事をほぼ書き上げてから$user_levelの存在を知り、涙ながらに今書き直している。つーか説明みても分からないけどget_currentuserinfo()は一体なんだったんだ?? [戻る]

Comments (Close):37

Matchyo 09-11-14 (土) 23:10

とても参考になりました!
ありがとうございました!

daruman 09-11-15 (日) 0:10

案外需要があるようですね、お役に立ててなによりです!

Shane 12-10-24 (水) 16:10

Appreciation to my father who told me on the topic of this weblog, this website
is genuinely remarkable.

Eat Stop Eat Pilon 13-02-25 (月) 20:39

Have you ever considered about adding a little
bit more than just your articles? I mean, what you say is important and all.
But think about if you added some great images or videos to give your posts more,
“pop”! Your content is excellent but with pics and clips, this site could certainly be one of the greatest in its
field. Good blog!

Xavier 13-02-25 (月) 22:49

Amazing! I’m really enjoying the design of your blog. Are you using a custom made theme or is this freely available to all individuals? If you really don’t want to
say the name of it out in the public, please make sure to e-mail
me at: xaviergreco@googlemail.com. I’d absolutely love to get my hands on this template! Bless you.

magneticmessagingdownload.com 13-03-06 (水) 14:55

We stumbled over here different web page and thought I might as well check things out.
I like what I see so now i am following you. Look forward to checking out your
web page again.

stroke nih stroke scale 13-05-11 (土) 6:11

Write more, thats all I have to say. Literally, it seems as though you
relied on the video to make your point. You clearly know what youre
talking about, why throw away your intelligence on just posting videos to your
site when you could be giving us something enlightening to read?

xanga.com 13-05-17 (金) 0:12

If you are going for finest contents like me, only
pay a visit this website everyday as it offers feature contents, thanks

pregnancy miracle scam 13-05-24 (金) 3:45

With havin so much written content do you ever run into any issues of plagorism or copyright violation?
My website has a lot of exclusive content I’ve either written myself or outsourced but it seems a lot of it is popping it up all over the web without my agreement. Do you know any ways to help protect against content from being ripped off? I’d truly appreciate it.

baseball betting 13-07-02 (火) 23:48

Do you have a spam problem on this blog; I also am a blogger, and
I was wanting to know your situation; many of us have created some nice methods and we are looking to exchange techniques with other folks, please shoot me
an e-mail if interested.

personal path to pregnancy by beth kiley 13-07-23 (火) 8:25

Hey there. Sorry to hassle you but I happened to run across
your blog website and noticed you’re using the exact same theme as me. The only issue is on my website, I’m unable to
get the design and style looking like yours.
Would you mind emailing me at: alfonzoreuter@arcor.de so I can get this figured out.
By the way I’ve bookmarked your site: http://weblog.atl-r.net/blog/tipstomake_communitysite2/ and will be visiting often. Thank you!

cruise control diet program 13-07-24 (水) 19:38

obviously like your web-site however you have to take a look at the spelling on several of your posts.
Several of them are rife with spelling problems and
I to find it very troublesome to tell the truth however I’ll definitely come back again.

electric car conversion parts 13-07-27 (土) 11:04

I am really impressed with your writing skills and also with
the layout on your blog. Is this a paid theme or did you modify it
yourself? Anyway keep up the excellent quality writing, it’s rare to see a great blog like this one nowadays.

Ejaculation Trainer by Matt Gorden Free Download 13-08-02 (金) 20:26

This system identifies triggers of early ejaculation.

New york style Pizza Recipe 13-08-24 (土) 16:32

Do you mind if I quote a couple of your articles as long as I provide credit and sources back to your site?
My blog is in the exact same niche as yours
and my users would definitely benefit from a lot of the information
you present here. Please let me know if this
okay with you. Appreciate it!

http://renegadedietpdf.blogspot.com/ 13-09-05 (木) 3:54

Your body is designed to burn off carbohydrates first and then fats.
The typical child’s diet is very deficient
in a group of essential fatty acids called omega-3. A general rule
for portion size is to eat like a king in the morning, like a prince at lunch and as a pauper during
the evening.

jacks blowjob lessons pdf 13-09-15 (日) 6:36

This being to such an extent that she almost regretted that she was on her way home.
If you subscribe to an online low cost golf card application, make guaranteed you can investigation the
golf training course directory. Some males complain that they can not execute perfectly with their wives but can execute very well with other girls.

早見あかり ハーフ 13-10-02 (水) 19:25

コレって、パン!としたハリがあって色むらのない膝を見せるためのものであって、
 一部では西山の“妊婦ヌード”の話も浮上しており、すでに複数の出版社が水面下でオファーをかけているともいわれている。脱いで、産んで、そのままフェードアウトということにならなければいいのだが……。

tonka mighty motorized fire engine shop 13-10-03 (木) 6:12

Keffiyeh – It can also be defined as a “head scarf for men. They do however have to stop after the door has opened and site obediently. Keep Windows Updated – Windows updates, although seen by many as a nuisance, are vital to keep your system protected from hacking and intrusions, especially the crucial updates you will get from time to time.

5 minute learning machine pdf 13-10-06 (日) 22:01

You may find that you remember things better when you have music on
in the background. There are many exercises you can use to improve brain function and sharpen memory.
No doubt you are aware of what neuroscience tells us about how the brain works,
but it’s worth reviewing.

Jason ferruggia minimalist Training pdf 13-10-18 (金) 9:57

Arms are one muscle group where this is extremely common,
with some claiming that compound back exercises are sufficient to promote full biceps development, and compound chest and shoulder exercises will beef up the triceps with large amounts of muscle
mass, all without any isolation exercises to target these specific areas.
If you have the same levers as your buddy, then yes,
you truly are stronger with the deadlift or bench press.
If you are keen in online shopping, you can even have barbells and a weight lifting bench for only $50.

http://magicofmakinguppdffree.blogspot.com 13-10-19 (土) 18:22

With the Magic of Making Up guide you will learn exactly what to do and what to say to get
your ex-lover back in your arms. Instead of draining all of your energy on trying to figure out what went wrong in your relationship with your ex, concentrate on doing those daily activities that bring you joy, fulfillment and happiness.

The Clean Slate Method gets both members of a relationship involved on a very emotional level, unlike any apology you have ever
witnessed.

Blogspot.Com 13-10-20 (日) 6:11

In order to succeed you have to be strong and not allow
emotions to get the better of you. Therefore, in such a situation, if you try to call her or meet her,
she might likely decline all your initiatives, also you
are going to appear extremely needy and desperate to her, thus, pulling her away from you even more.
Getting your girlfriend back is not a very easy-to-go
step; you need to spend sufficient time on the entire process.

college baseball scholarships 13-10-23 (水) 5:41

Heya just wanted to give you a quick heads up and let you know a few
of the pictures aren’t loading properly. I’m not sure why but I think its a linking issue.
I’ve tried it in two different web browsers and both
show the same results.

increase Pitching Velocity 13-10-23 (水) 11:41

I love what you guys tend to be up too. This
type of clever work and exposure! Keep up the great works
guys I’ve incorporated you guys to my blogroll.

mensajes magneticos descargar gratis 13-10-24 (木) 2:28

It’s truly very complicated in this active life to
listen news on TV, therefore I only use internet for that purpose, and take the latest
information.

How To Get A Baseball Scholarship 13-10-31 (木) 1:05

I don’t know whether it’s just me or if perhaps everyone else encountering
issues with your blog. It appears like some of the text on your posts are
running off the screen. Can someone else please provide feedback and let me know if this
is happening to them as well? This could be a issue with
my browser because I’ve had this happen before. Many thanks

Ford Ranger 13-11-15 (金) 14:12

Howdy! This is my first visit to your blog! We are a group of volunteers and starting a new initiative in a community in
the same niche. Your blog provided us useful information to
work on. You have done a extraordinary job!

what men secretly want pdf 13-11-24 (日) 7:41

If some one wishes expert view about running a blog afterward i propose
him/her to go to see this weblog, Keep up the nice work.

zcode system 13-11-28 (木) 17:55

Would you mind if I quote a several of your posts as long as
I provide credit and sources returning to your webpage: http://weblog.atl-r.net/blog/tipstomake_communitysite2/. I most certainly will aslo ensure to give you the
appropriate anchor-text hyperlink using your blog title: wordpressで非公開コミュニティサイトを作る(2)ユーザーレベルで表示内容を変更+plugin“Category Access”.
Please make sure to let me know if this is acceptable with you.
Thanks

wooden door Singapore 14-01-02 (木) 10:28

Yes! Finally something about wrought iron Singapore..

eat Stop eat free Ebook 14-02-28 (金) 0:21

This is а boon for peoplе who tend to get ɦungry fast.

If not bulk, then, what are the benefits of strength training.
Thiѕ is one of the most extraordinary weight loss secrets.

get The girl code free 14-03-06 (木) 17:23

Τhat is for the reason that he is not sure of what he is feeling.
Upon hiriոg an employee, make sure you Һave a well-writteո employee handbook that outlineѕ how employee աɑrnings and terminations
for violations will occur. You can use this to
shape a light-hearted text message such as:
“Hey, I was at Starbucks this afternoon and saw a girl who looked IDENTICAL to ‘Phoebe’ from Friends.

laserowe zamykanie naczynek radom 14-03-24 (月) 6:36

What’s up, laserowe zamykanie naczynek radom I just
wanted to mention, I liked this article post7171. It actually was inspiring 51655.
Keep going publishing!

p228280 14-03-29 (土) 21:10

Touche. Outstanding p228280 discussions. Continue the good work.

This kind of text p346209 is worth everyone’s attention.

When might I garner more information?

depilacja laserowa radom 14-04-04 (金) 1:53

What’s up, depilacja laserowa radom I just want
to say, I enjoyed this post p7620. That was funny new.
Continue on writing!

fryzjer Kabaty 14-04-10 (木) 23:19

Incredible points. Great fryzjer Kabaty discussions. Keep
up the good work.

This valuable text fryzjer Kabaty is worth everyone’s attention.
When do I find out more?

Trackbacks (Close):3

pingback from niko » wordpress:会員制っぽく閲覧制限したい 09-07-31 (金) 10:07

[...] ■カテゴリごとに…その2 http://weblog.atl-r.net/blog/tipstomake_communitysite2/ こちらでもカテゴリごとに制限するプラグインを紹介してます。 Permalink|Comments RSS Feed – Post a comment|Trackback URL. [...]

pingback from pc.casey.jp » WordPress 一部又は全部を会員制にする 10-09-20 (月) 3:29

[...] wordpressで非公開コミュニティサイトを作る(2)ユーザーレベルで表示内容を変更+plugin“Category Access” – atl*weblog に詳細な解説が記載されている [...]

pingback from WordPressでベーシック認証させる方法まとめ 11-04-15 (金) 19:18

[...] で表示内容を変更+plugin“Category Access” http://weblog.atl-r.net/blog/t……nitysite2/ [...]

Home > blog > wordpressで非公開コミュニティサイトを作る(2)ユーザーレベルで表示内容を変更+plugin“Category Access”

Calendar
« 2017 年 6月 »
M T W T F S S
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Search
ABM | AnotherBookmark™
heteml
heteml
amadana
amadana(アマダナ)
feed
Meta

Return to page top