>> 運営者プロフィールはこちら
WEB全般

wp-membersでカスタム投稿とアーカイブページにもロックをかける方法

wp-membersでカスタム投稿とアーカイブページにもロックをかける方法 WEB全般
記事内に広告が含まれています。
【この記事は2021年5月時点の情報です】
プラグインのアップデートによって状況が変わっている可能性があります。

wp-membersを使ってログインユーザーに限定したコンテンツを作成したい。
wp-membersの標準機能では、カスタム投稿ページ(一覧・個別)とアーカイブページ(一覧ページ)にロックをかけることができなくて困っている。
非ログインユーザーがこれらのページにアクセスしたら、コンコンテツをブロックし、かつwp-membersのログインページにリダイレクトさせる方法を教えて欲しい。

こんなことを考えている方へ。
この記事のポイントは以下です。

・非ログインユーザーが、カスタム投稿ページ(一覧・個別)やアーカイブページ(一覧ページ)にアクセスしたら、コンテンツをブロックし、かつwp-membersのログインページにリダイレクトさせる方法
・functions.phpを編集する方法で解説します。

Shopify飯店

Shopify飯店

>> 運営者の詳しいプロフィールはこちら

\当サイトのおすすめ記事はこちら👇/

■■WEB制作を学ぼう■■

人気記事 2万文字でデイトラWEB制作コース!を徹底解説!口コミはこちら!📺

 

スポンサーリンク

wp-membersでカスタム投稿とアーカイブページにもロックをかける方法

wp-membersでカスタム投稿ページ(一覧・個別)やアーカイブページ(一覧ページ)にもロックをかける方法を解説します。デフォルトの機能では、これらのページをブロックできないため、functions.phpを編集して対応します。

【追記:2021年5月13日】
プラグインの管理画面には「カスタム投稿を対象にするか?」というようなチェック項目があります。ここを操作すれば、カスタム投稿ページも標準機能でブロック可能な気がするのですが、設定しても機能しないんですよね・・・。

 

wp-membersで今回やりたいこと

今回やりたいことは次の5つです。
ただ、④については標準の機能で実装が可能です。①②③⑤については標準の機能では実現できません。なので、functions.phpを編集して対応します。

No 内容
カスタム投稿の”一覧ページ(アーカイブページ)“に非ログインユーザーがアクセスしたら、wp-membersのログインページにリダイレクトさせたい
カスタム投稿の”個別ページ(個別記事)“に非ログインユーザーがアクセスしたら、wp-membersのログインページにリダイレクトさせたい
カテゴリーの”一覧ページ(アーカイブページ)“に非ログインユーザーがアクセスしたら、wp-membersのログインページにリダイレクトさせたい
カテゴリーの”個別ページ(個別記事)“に非ログインユーザーがアクセスしたら、wp-membersのログインページにリダイレクトさせたい
特定のURLが含まれるページ“に非ログインユーザーがアクセスしたら、wp-membersのログインページにリダイレクトさせたい

 

事前にwp-membersでログイン用ページを作ろう

事前にwp-membersの機能を使ってログイン用ページを作成しておきましょう。
外部サイトですが、次の記事で詳しく解説されています。

 

スポンサーリンク

wp-membersでカスタム投稿とアーカイブページにロックをかけるためのコード

wp-membersでカスタム投稿ページ(一覧・個別)やアーカイブページ(一覧ページ)にロックをかけるためのコードを紹介します。

functions.phpにこれから紹介するコードを書くことで、指定したカスタム投稿ページ(一覧・個別)やアーカイブページ(一覧ページ)に非ログインユーザーがアクセスしたら、事前に作っておいたwp-membersのログインページにリダイレクトさせることができます。

なお、事前に作成したwp-membersのログインページのスラッグは”loginpage”としています。

 

①カスタム投稿の一覧ページをブロックするコード

//非ログイン時に、カスタム投稿videoの一覧ページにアクセスしたら、ログインページを表示
function archive_video_page_redirect() {
	if( ! is_user_logged_in()  && is_post_type_archive( 'video' ) ) {
		wp_redirect( '/loginpage' );
		exit();
	}
}
add_action( 'template_redirect','archive_video_page_redirect');

この例では、非ログインユーザーが”video”というスラッグのカスタム投稿の一覧ページにアクセスしたら、wp-membersのログインページへリダイレクトさせることができます。

以下の部分は、”ログインしていない”かつ”アーカイブページのスラッグがvideo”を意味しています。これをif文に含めることで条件分岐をさせています。

! is_user_logged_in() && is_post_type_archive( 'video' )

条件に合致したら、”/loginpage”にリダイレクトをさせています。

wp_redirect( '/loginpage' );

 

②カスタム投稿の個別ページをブロックするコード

//非ログイン時に、カスタム投稿videoの個別ページにアクセスしたら、ログインページを表示
function single_video_page_redirect() {
	if( ! is_user_logged_in()  && is_singular('video') ) {
		wp_redirect( '/loginpage' );
		exit();
	}
}
add_action( 'template_redirect','single_video_page_redirect');

この例では、非ログインユーザーが”video”というスラッグのカスタム投稿の個別ページにアクセスしたらwp-membersのログインページへリダイレクトさせることができます。

以下の部分は、”ログインしていない”かつ”個別ページのスラッグがvideo”を意味しています。これをif文に含めることで条件分岐をさせています。

! is_user_logged_in() && is_singular('video')

条件に合致したら、”/loginpage”にリダイレクトをさせています。

wp_redirect( '/loginpage' );

 

③特定のカテゴリーの一覧ページをブロックするコード

//非ログイン時に「カテゴリースラッグ:directions」の一覧ページにアクセスしたら、ログインページを表示
function directions_page_redirect() {
	$url = $_SERVER['REQUEST_URI'];
	if( ! is_user_logged_in()  && strstr($url,'category/directions')==true ) {
		wp_redirect( '/loginpage' );
		exit();
	}
}
add_action( 'template_redirect','directions_page_redirect');

この例では、非ログインユーザーが”category/directions”というURLが含まれるページにアクセスしたら、wp-membersのログインページへリダイレクトさせています。WordPressのURLの構造が【category/カテゴリーのスラッグ名】になるのを利用して、上記のコードを設定しました。

以下の部分は、”ログインしていない”かつ”URLがcategory/directionsを含む”を意味しています。これをif文に含めることで条件分岐をさせています。

! is_user_logged_in() && strstr($url,'category/directions')==true

条件に合致したら、”/loginpage”にリダイレクトをさせています。

wp_redirect( '/loginpage' );

 

④特定のURLが含まれるページをブロックするコード

//非ログイン時に、「/staff」というURLが含まれるページにアクセスしたら、ログインページを表示
function staff_kotei_top_page_redirect() {
	$url = $_SERVER['REQUEST_URI'];
	if( ! is_user_logged_in()  && strstr($url,'/staff')==true ) {
		wp_redirect( '/loginpage' );
		exit();
	}
}
add_action( 'template_redirect','staff_kotei_top_page_redirect');

カテゴリを指定したのと同じやり方です。この例では、非ログインユーザーが”/staff”というURLが含まれるページにアクセスしたら、wp-membersのログインページへリダイレクトさせています。

以下の部分は、”ログインしていない”かつ”URLがstaffを含む”を意味しています。これをif文に含めることで条件分岐をさせています。

! is_user_logged_in() && strstr($url,'/staff')==true

条件に合致したら、”/loginpage”にリダイレクトをさせています。

wp_redirect( '/loginpage' );

 

スポンサーリンク

まとめ

この記事のポイントはこちらです。

・wp-membersの標準機能では、カスタム投稿ページ(一覧・個別)とアーカイブページ(一覧ページ)にロックをかけることができない
・対応としては、functions.phpに非ログインユーザーが上記のページにアクセスしたら、wp-membersのログインページにリダイレクトする記述を書けばOK
・wp-membersのログイン用ページは事前に作成しておく必要がある

※この記事は2021年5月時点の情報です。プラグインのアップデートによって状況が変わっている可能性があります。

今回の記事はここまです。

この記事を書いた人
Shopify飯店店主

自分の仕事の経験を記事にしています。東証一部のEC企業で5年→個人事業主→法人化。サイト構築実績80社以上、ECコンサル・分析実績40社以上。コンサルにおいては、EC売上3倍、キャンペーン応募者数1.7倍などの実績があります。

Shopify飯店店主をフォローする
スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました