WordPressで購読者がダッシュボードにアクセスできないようにする実装方法(サンプルコード付き)
みなさんこんにちは!エンジニアの高澤です!
今回はWordPressで購読者がダッシュボードにアクセスできないようにする実装方法について解説していきたいと思います。
今回の内容はマニアックにはなりますが、例えば会員登録機能が実装されたWordPressサイトには必要になる場面が多々ある内容となっております。
よろしければぜひ当記事をご活用いただき、お仕事や個人ブログの構築などにお役立ていただけましたら幸いです。
目次
今回の実装の内容
まずは今回の実装内容について具体的に解説しておきたいと思います。
結論からいうと記事タイトルの通り「WordPressで購読者がダッシュボードにアクセスできないようにする」ことになります。
具体的には以下の内容になります。
- 購読者がダッシュボードにアクセスできないようにする
- 購読者のツールバーを非表示にする
「購読者」とは、WordPressへの登録ユーザーアカウント権限が「購読者(Subscriber)」のことを指します。
WordPressサイトで登録ユーザーに提供される最も制限された権限の一つであり、一般的にはサイトに対する情報閲覧やコメント投稿などの目的で使用されます。
また、実装自体は当記事のサンプルコードをコピペしていただければ大丈夫なので、実装は全く難しくありません。
実装しないことによって発生する問題
当記事の内容を実装しないことによって発生する問題について解説しておきます。
例えば会員サイトをイメージしてください。
会員サイトはユーザーがログインして利用するサイトですが、WordPressで会員サイトを構築する場合基本的にWordPress標準機能のユーザー機能を利用します。
そのため、サイト管理者でない一般ユーザーもWordPressにログインすることになるのです。
言い方を変えると、一般ユーザーもWordPress管理画面にアクセスできるようになってしまい、下手したらサイト管理者によって運用されている投稿ページの内容やサイトの設定などを勝手に改ざんされてしまう可能性があるわけです。
なので今回の実装を行い、一般ユーザーが管理画面を閲覧できないようにし、サイト管理者がログイン中に表示されるページ上のツールバーも非表示にする実装をしてセキュリティを高めるわけです。
実装する方法
それでは早速実装する方法について解説していきたいと思います。
以下のコードをfunctions.phpにコピー&ペーストしてください。
<?php
// 購読者がダッシュボードにアクセスできないようにする
add_action( 'auth_redirect', 'subscriber_go_to_home' );
function subscriber_go_to_home( $user_id ) {
$user = get_userdata( $user_id );
if ( !$user->has_cap( 'edit_posts' ) ) {
wp_redirect( get_home_url() );
exit();
}
}
// 購読者のツールバーを非表示にする
add_action( 'after_setup_theme', 'subscriber_hide_admin_bar' );
function subscriber_hide_admin_bar() {
$user = wp_get_current_user();
if ( isset( $user->data ) && !$user->has_cap( 'edit_posts' ) ) {
show_admin_bar( false );
}
}
すると購読者がダッシュボードにアクセスできないようになり、サイトページ上の表示されていたツールバーを非表示にすることができたかと思います。
それぞれのコードについて解説いたします。
ダッシュボードにアクセスできないようにするコードについて
WordPressのアクションフックであるauth_redirect
フックに、自作した関数であるsubscriber_go_to_home
()関数を追加し、ログインしたユーザー権限が「購読者」の場合にダッシュボードへのアクセスをトップページへリダイレクトするようにします。
get_userdata()
関数を使ってユーザー情報を取得し、そのユーザーがedit_posts
権限を持っていない場合には、wp_redirect()
関数を使ってトップページのURLにリダイレクトし、スクリプトの実行を終了します。
ツールバーを非表示にするコードについて
WordPressのアクションフックであるafter_setup_theme
フックに、自作した関数であるsubscriber_hide_admin_bar
()関数を追加し、購読者の場合に管理バー(ツールバー)を非表示にしています。
wp_get_current_user()
関数を使って現在のユーザー情報を取得し、そのユーザーがedit_posts
権限を持っていない場合にはshow_admin_bar( false )
を呼び出して管理バーを非表示にしています。
当記事の実装が必要な具体例
購読者(subscriber)がダッシュボードにアクセスできないようにするWordPressサイトの具体的な例をいくつか挙げます。
例としては、以下のサイトがあげられます。
- 会員制ブログサイト
- ニュースレター購読サイト
- オンライン学習プラットフォーム
- ニュースサイト
- ファンコミュニティサイト
- Eコマースサイト(限定会員向け)
これらのサイトは、購読者がサイトコンテンツの閲覧や購読のみを行い、ダッシュボードや管理画面にアクセスする必要がありません。
それでは、それぞれ解説いたします。
会員制ブログサイト
会員制ブログサイトとは、ブログ運営者が、記事の一部を購読者限定にして提供しているサイトのことをいいます。
購読者は有料会員や登録メンバーとしてコンテンツを閲覧することが主目的で、サイト運営には関与しません。そのため、管理画面にアクセスする必要がありません。
会員制ブログサイトには、例えば、プレミアムブログ(有料会員が独自の記事や分析を読むために登録するサイト)があります。
ニュースレター購読サイト
ニュースレター購読サイトとは、その名の通りニュースレターの購読専用サイトのことをいいます。
ユーザーがサイトに登録してニュースやメールマガジンを購読することができるようになりますが、ダッシュボードにアクセスする必要がありません。購読者はフロントエンドでニュースやメールの購読状況を確認できます。
ニュースレター購読サイトには、例えば、メルマガ購読サイト(ニュースレターや限定メール配信を購読者に提供するサイト)があります。
オンライン学習プラットフォーム
オンライン学習プラットフォームとは、オンラインコースを提供するLMS(Learning Management System)を利用したサイトのことをいいます。
学習者(購読者)は、コンテンツや教材を閲覧することが主目的であり、投稿機能やサイト設定を行う必要がありません。学習者が誤ってダッシュボードにアクセスすることを防ぎます。
オンライン学習プラットフォームには、例えば、オンライン教育プラットフォーム(Udemyのような、学習者がコースにアクセスするサイト)があります。
ニュースサイト
ここでいうニュースサイトとは、購読者に登録してもらうことで、コメント機能や限定記事を提供するニュースサイトのことをいいます。
購読者はニュース記事や特別なコンテンツを閲覧できるが、サイトの管理や編集には関与しないため、ダッシュボードは不要です。
ニュースサイトには、例えば、有料ニュースメディア(購読者向けに限定コンテンツを提供するニュースメディア)があります。
ファンコミュニティサイト
ファンコミュニティサイトとは、アーティストやバンドのファンコミュニティサイトのことをいいます。
ファンが購読者として登録し、限定コンテンツや更新情報を受け取ることが主目的です。購読者が管理画面にアクセスする必要がないため、アクセスを制限します。
ファンコミュニティサイトには、例えば、ファンクラブ限定サイト(ファンがコンテンツや情報にアクセスするための会員制サイト)があります。
Eコマースサイト(限定会員向け)
Eコマースサイト(限定会員向け)とは、限定商品や特典を会員に提供するオンラインショップのことをいいます。
購読者は商品を閲覧・購入するためにサイトに登録しますが、サイト管理の権限は不要です。購読者の権限でダッシュボードにアクセスする必要はないため、アクセス制限をかけます。
例えば、会員制ショッピングサイト(会員登録後、特別価格や限定商品にアクセスできるサイト)があります。
ここまでに例にあげたこれらのサイトでは、購読者が基本的にコンテンツの消費に集中するため、管理機能にアクセスする必要がありません。購読者のダッシュボードへのアクセスを制限することで、誤操作や不要な情報の表示を防ぎ、ユーザー体験をシンプルに保つことができます。
まとめ
WordPressで購読者がダッシュボードにアクセスできないようにする実装方法についての解説は以上になります。
内容はマニアックにはなりますが、会員登録サイトとして実装されたWordPressには必要になる可能性の高い内容となっております。
よろしければぜひ当記事をご活用いただき、お仕事にお役立ていただけましたら幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など