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;
}