>> 【4万文字で解説】Shopifyオンラインスクールまとめ

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

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

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

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

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

Shopify飯店

Shopify飯店

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

■■Shopifyを学ぼう■■

人気記事 4万文字で徹底解説!Shopifyおすすめスクールまとめ!🏫
人気記事 1.5万文字でデイトラShopifyコース!を徹底解説!📺
人気記事 Shopifyのおすすめ学習方法まとめ!👩‍💻
人気記事 筆者の経験談!独学ロードマップ決定版!🖥
人気記事 Shopifyを学べるおすすめの書籍まとめ!📚
人気記事 日本語のみを厳選!おすすめのUdemy動画教材🎦
人気記事 コピペでOK!カスタマイズパーツ販売中📝

 

スポンサーリンク

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月時点の情報です。プラグインのアップデートによって状況が変わっている可能性があります。

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

タイトルとURLをコピーしました