人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WordpressのUser Access Managerという会員制サイト構築プラグインに関する質問です。

ログインしたユーザーごとに表示される記事が異なるサイトを作ろうと実験しており、
基本は実現できたのですが、トップページに固定ページの内容を表示する所でつまづいています。

//固定ページの内容を表示
$content = get_page(10);
echo $content->post_content;

上記の記述方法では全ユーザーに対して内容が開示されてしまうため、
User Access ManagerのFunctionを利用して
User Access Managerによって設定されたユーザーの閲覧権限を取得し、
条件分岐をかけようかなと考えています。
ですが、UserAccessManager.class.phpをいまいち解読しきれずに
「ログインしているユーザーの閲覧権限は?」という情報を取得できずにいます。

http://wordpress.org/support/topic/plugin-user-access-manager-functions
こちらのフォーラムに答えがありそうな予感もしつつ、
小学生レベルの英語力+プログラミング能力により答えに辿り着けずにいます。

ログインしているユーザーのUser Access Managerによって設定された
購読権限を取得する方法を皆様のお力でご教授頂ければ…!
長くなりましたが、よろしくお願いいたします。

●質問者: みずぽ
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
●500ポイント ベストアンサー

データベースに直接問い合わせる方法になります。
利用しているテーマのfunctions.phpに以下の関数※(関数名は何でもいいのですが・・・)を追加します。

function get_usergroups() {
global $wpdb, $current_user;
$groups = array();
if($current_user) {
$q = "SELECT ID, groupname FROM ". $wpdb->prefix . "uam_accessgroups AS acg JOIN " . $wpdb->prefix . "uam_accessgroup_to_object AS acgto ON acg.ID = acgto.group_id WHERE acgto.object_type = 'user' AND acgto.object_id = " . $current_user->ID;
$res = $wpdb->get_results($q);
if(isset($res) && !empty($res)) {
foreach($res as $grp) {
$groups[] = esc_html($grp->groupname);
}
}
}
return $groups;
}


次のトップページのテンプレートの任意の箇所で次のようにします。

$uam_grp = get_usergroups();
if(!empty($uam_grp) && in_array("表示を許可するグループ名", $uam_grp)) {
echo "<div>\n";
$page_id = 10;
$page = get_page($page_id);
echo apply_filters('the_content', $page->post_content);
echo "</div>\n";
} else {
/* 許可されないユーザーに対する処理 */
}



【※追記※】

サイト管理人にも表示する場合は次のようにするといいです。

if($current_user->ID == 1 || !empty($uam_grp) && in_array("許可するグループ名", $uam_grp)) {


表示許可するグループが複数ある場合は次のようにしてみてください。

if($current_user->ID == 1 || !empty($uam_grp) && (in_array("グループ名1", $uam_grp) || in_array("グループ名2", $uam_grp))) {


※許可するグループが3つ以上ある場合も同じように追記します。


みずぽさんのコメント
ご回答ありがとうございます。 頂いたソースコードをもとに再度実験を試みたのですが、閲覧権限ごとに情報を切り分けることに成功しました! なるほどDB上からユーザー情報を取得すればよいとは思い至りませんでした。未熟! これでUser Access Managerでさまざまな応用ができそうです。 初心者でも理解しやすい丁寧なご解説とても助かりました。 重ね重ね本当にありがとうございました!!スッキリです。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ