概要
User Specific Content プラグインを使用すると、 WordPressユーザー名別またはユーザーの役割ごとに文の内容やページのコンテンツへのアクセスを制限することができます。
より詳細に制限するには、 MEMBERSHIP 2 PROのような有料のプラグインを使用する必要がしますが、単に会員の役割別(あるいは個々のメンバー別)で、特定の文のアクセス権を付与する場合User Specific Contentプラグインでも十分できます。
しかし、特定のカテゴリを特定の役割のみを表示できるように制限しようとしてカテゴリー内の記事が非常に多くの場合には、このプラグインではなく、有料のプラグインを使用することがより効果的である。 あるいは Restrict Categoriesというプラグインがありますが、現在、2年の間にアップデートがないされて正常に動作していることを保証することができないですね。 または Press Permit Coreというプラグインも精巧にコンテンツを制御することができるようです。 (このプラグインは、 Pro バージョンもあります。)
ちなみに新しい役割を作成する場合には、 User Role Editorプラグインを使用します。
User Specific Contentプラグインを使用して、コンテンツを制限する
User Specific Content設定ページ
User Specific Contentプラグインを使用すると、ダッシュボードのサイドバーの ユーザー メニューの下に User Specific Contentという設定メニューが追加されます。
User Specific Content設定メニューでは、コンテンツをブロックする場合に表示するメッセージ、Excerptsをブロックするかどうか、User Specific Contentメタボックスを表示する記事のタイプ(文またはページ)など、いくつかの設定を指定することができます。
個別記事/ページに表示されるUser Specific Contentメタボックス
もし文とページにUser Specific Contentオプションを表示するように設定した場合、(基本的に文章とページに表示される)文とページの編集画面にUser Specific Contentメタボックスが表示されます。
上記の図のように、その文/ページを役割別(1)、ユーザー名、別(2)もしくはログインするかどうか(3)に基づいて表示するかを指定することができ、(4) Content Blocked message カーンに遮断される場合に表示するメッセージを指定することができます。
権限のないユーザーが制限され、コンテンツにアクセスする場合
権限のないユーザーが制限され、コンテンツにアクセスする場合 ユーザー> User Specific Content 設定ページの「Global Blocked message「私の個々の記事/ページの」Content Blocked message「で指定したメッセージが表示されます。HTMLコードで入力することもできます。 (ただし、要約文では通常HTMLタグがStrip(削除)されて表示されるのでテキストのみ表示されます。この場合、CSSでレイアウト調整が可能です。)
<div style="display: inline"><img src="/wp/wp-content/uploads/2016/01/stop.png"></div><div style="display: inline-block"><div style="display: table; min-height: 128px;"><div style=" display:table-cell; vertical-align:middle;"><div style="padding: 15px;">죄송합니다! <br>이 글을 볼 권한이 없습니다.<br>자세한 내용은 관리자에게 문의하시기 바랍니다.</div></div></div></div>
例えば、上記のようなHTMLコードを入力すると、次の図のように記事を見るが制限されるというメッセージが、図と一緒に表示されます。
以上でUser Specific Contentプラグインを使用して、ユーザーの役割別、ユーザー名ごとに WordPress コンテンツ(記事/ページ)へのアクセスを制限する方法を説明しました。
付録:関数を使用して、特定のカテゴリに特定のユーザーの役割のみをアクセスするように設定する
プラグインを使用せずに、特定のカテゴリへのアクセスを特定のユーザーの役割(会員ランク)のみがアクセスするように設定しようとする場合は、次のようなコードを使用してみることができます。
add_filter('template_include', 'restict_by_category'); function check_user() { $user = wp_get_current_user(); if ( ! $user->ID || in_array('subscriber', $user->roles) ) { // user is not logged or is a subscriber, ユーザー가 로그인하지 않았거나 구독자임 return false; } return true; } function restict_by_category( $template ) { if ( ! is_main_query() ) return $template; // only affect main query. $allow = true; $private_categories = array('reserved', 'personal'); // categories subscribers cannot see; 접근이 제한되는 카테고리 if ( is_single() ) { $cats = wp_get_object_terms( get_queried_object()->ID, 'category', array('fields' => 'slugs') ); // get the categories associated to the required post if ( array_intersect( $private_categories, $cats ) ) { // post has a reserved category, let's check user $allow = check_user(); } } elseif ( is_tax('category', $private_categories) ) { // the archive for one of private categories is required, let's check user; 비공개 카테고리 중 하나에 대한 카테고리, ユーザー 체크함 $allow = check_user(); } // if allowed include the required template, otherwise include the 'not-allowed' one; 허용되는 경우 템플릿을 포함하고 그렇지 않은 경우 'not-allowed' 템플릿을 포함함 return $allow ? $template : get_template_directory() . '/not-allowed.php'; } // Source: http://wordpress.stackexchange.com
参考までに、上記のコードは、最新の WordPressで正常に動作しているかテストを行っていません。
コメントを残す