返信先: 会員ログイン情報を記憶時の長さ変更について

2016 年 2 月 17 日

ホーム フォーラム 使い方全般 会員ログイン情報を記憶時の長さ変更について 返信先: 会員ログイン情報を記憶時の長さ変更について

#77434

xd
参加者

member_login() を見ましたがやはりセッションと連動しているためブラウザを閉じるとダメなようです。
継続的にログインしていることを判定するにはCookieを使うことで解決しました。
コード置いておきます。

//Welcartの会員ページログイン時間を変更する/////////////////////////////////////
add_filter( 'usces_filter_member_login', 'WELCART_MEMBER_LOGIN' , 1 );
function WELCART_MEMBER_LOGIN( $member )
{
	//Cookieを取得する
	$values = isset($_COOKIE['usces_cookie']) ? unserialize(stripslashes($_COOKIE['usces_cookie'])) : NULL;

	//中身をシリアライズする
	$value = serialize( $values );

	//1年間有効
	$timeout = time() + 365 * 86400;

	$domain = $_SERVER[ 'SERVER_NAME' ];

	//クッキーをセットする
	$res = setcookie( 'usces_cookie' , $value, $timeout , USCES_COOKIEPATH , $domain );

	return $member;
}
//Welcartを会員制にする////////////////////////////////////////////////////////
add_filter( 'usces_filter_single_item_inform' , 'SHOP_IS_MEMBERS_ONLY' , 1 );
function SHOP_IS_MEMBERS_ONLY( $html )
{

	//Cookieを取得する
	$values = isset($_COOKIE['usces_cookie']) ? unserialize(stripslashes($_COOKIE['usces_cookie'])) : NULL;

	global $post , $usces;

	//価格のパターンをセット
	$pat = '{(<div\s?class\s?=\s?"field_price">)(.*?)(<\/div>)}i';

	//フォームのパターンをセット
	$pat2 = '{(<input\s?name\s?=\s?"inCart)}i';

	//会員としてログインしていなければ
	if(! usces_is_login() or $values[ 'rme' ] != 'forever' )
	{

		$html = preg_replace( $pat , '<div class="member-attention"><a href="' . USCES_MEMBER_URL . '" target="_blank">ログイン</a>していないため価格が表示されません</div>' , $html );

		$html = preg_replace( $pat2 , '<div class="member-attention"><a href="' . USCES_MEMBER_URL . '" target="_blank">ログイン</a>していないためカートへ入れることができません</div>$1' , $html );

		$html .= '<style>.field_price , .field_cprice , .itemGpExp , .skubutton{ display: none; }</style>';
	}

	return $html;
}