はじめまして。
Welcartを利用させていただいてECサイトの制作を進めております。
質問するところが間違っているなどございましたら、ご指摘くださいませ。
表題の件ですが、以下の環境・条件等で構築を進めている中で発生した事象です。
単純なミスによる事象かと思っているのですが、はまってしまった為投稿させていただきました。
ご回答いただければ幸いです。
開発環境
server: coreserver
SSL:共用SSL
wordpress ver : 3.3.2
Welcart Ver : Welcart1.1.10
コンテンツが表示される条件
通常会員以上でのアカウントでログインしない限りコンテンツを表示させないようにしたい。
サイトアクセス時は、ログイン画面が表示されます。
サイト内にある各リンクへのアクセスはもちろんログイン後以外閲覧することはできません。
カスタム内容
テーマファイル内のfunction.phpに以下の内容を記載し
ログイン後による表示は可能になっております。
function usces_the_member_status() {
global $usces,$wpdb;
if( !$usces->is_member_logged_in() ) return $res = -1;
$member = $usces->get_member();
$ID = $member[ID];
$tableName = $wpdb->prefix . "usces_member";
$query = $wpdb->prepare("SELECT * FROM $tableName WHERE ID = %d", $ID);
$data = $wpdb->get_row( $query, ARRAY_A );
$res = $data[mem_status];
return $res;
}
add_action('get_header', 'member_page');
function member_page(){
if(!is_page(5) && usces_the_member_status() != 0 ){
wp_redirect(get_permalink(5));
exit;
}
}
▼追記
(coreserverの共用SSL利用している為ログイン後、非SSLページに遷移後セッションがきれてしまうため以下も追記しています。
add_filter('usces_sessid_force', 'my_sessid_force');
function my_sessid_force( $notuse ){
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
else
return $_SERVER['REMOTE_ADDR'];
}
※上記ソースは、他サイトを参考にしたものです。
is_page(5) は、メンバーページのIDになります。
通常会員以上の方がログインすることで、サイト内のコンテンツが表示されるようになっております。
ログイン前の状態では、ログインページしか表示されません。
function.php から上記のコードを削除しても、ログイン後は403 Forbiddenが表示されます。
また、デフォルトのメンバーページである上記のページID”5″にリダイレクトするのは避け、別に1ページ作成し、そちらのページへリダイレクトさせ、ログイン後に再度ログアウトを試しましたが、同じ症状が発生いたします。
もし、ご回答いただけるような内容にふさわしいものであれば、ご回答いただけると幸いです。
以上、何卒よろしくお願い申し上げます。