[解決済み] Welcart1.3.1で会員ランクを判別するスクリプトが動かなくなった
フォーラム › テンプレート(テーマ) › [解決済み] Welcart1.3.1で会員ランクを判別するスクリプトが動かなくなった
-
投稿者投稿
-
2013年4月3日 5:57 PM #52502sebastian参加者
WordPress のバージョン:3.5.1
Welcart のバージョン:1.3.1
ご利用のテーマ:デフォルトテーマをカスタマイズ
Welcartで会員のランクを判別する為に以下のスクリプトを導入しました。
http://tukuruder.com/archives/1424(こちらのサイトを参考にしました)
function usces_the_member_status() {<br />
global $usces,$wpdb;</p>
<p> if( !$usces->is_member_logged_in() ) return $res = -1;</p>
<p> $member = $usces->get_member();<br />
$ID = $member[ID];</p>
<p> $tableName = $wpdb->prefix . "usces_member";<br />
$query = $wpdb->prepare("SELECT * FROM $tableName WHERE ID = %d", $ID);<br />
$data = $wpdb->get_row( $query, ARRAY_A );<br />
$res = $data[mem_status];</p>
<p> return $res;<br />
}以前のバージョンの記憶が定かでは無いのですが、WordPress、Welcart共に最新バージョンにしました所、上記のスクリプトを削除しないとカスタマイズしたテーマが適用できなくなりました。アップグレードする前は問題なく稼働していました。(最新のWelcartデフォルトテーマのfunctions.phpに記述した場合も同様に動かなくなりました)
Welcart1.3.1でもこのスクリプトを動かすにはどこを修正すればいいのでしょうか?
2013年4月4日 12:39 AM #66446yskysmrキーマスターこんにちは。
「動かなくなった」というのは、具体的に、どういう症状になったのでしょうか。
参考にされたサイトのほうを拝見しました。こちらは、usces_the_member_status() が搭載されていないバージョンのWelcartに、usces_the_member_status() を埋め込んでしまう方法のようですが、sebastian さまも、usces_the_member_status() 自体を定義されましたでしょうか。
(最新のWelcartデフォルトテーマのfunctions.phpに記述した場合も同様に動かなくなりました)
とありますが、これをすると関数の二重定義になってしまいます。最新バージョンのWelcartには、usces_the_member_status() が既に搭載されていますので、ご利用になるときは、この関数を呼ぶだけで使えると思います。
よろしくお願いいたします。
2013年4月4日 3:38 AM #66447sebastian参加者yskysmr様
早速の回答ありがとうございます。
まず、動かないという症状ですが以下のエラーメッセージが出ます。
サーバー エラー
http://xxx.com/ を取得中にウェブサイトでエラーが発生しました。 ウェブサイトがメンテナンスのために停止しているか、正しく設定されていない可能性があります。
ヒント:
このウェブページを後で読み込んでください。
HTTP エラー 500(Internal Server Error): サーバーによるリクエストの実行中に、予期しない状況が発生しました。
usces_the_member_status() 自体を定義されましたでしょうか。
はい、カスタマイズしたテーマのfunctions.phpに記述しました。
usces_the_member_status() が既に搭載されているということなので自分で定義した部分を削除しましたところエラーは出なくなりましたが今度は余計な表示が出てしまいます。こちらもアドバイスを頂けましたら助かります。
まず以下の様なスクリプトをカスタマイズしたテーマのfunctions.phpに会員ランクにわけて記述していますが、限定したページの左上に会員ランクをがテキストで表示されて忌まします。
/***********************************************************
* 会員専用ページの設定
0 >> 通常会員
is_page(1425)は限定したいページ、get_permalink(1495)は飛ばしたいページ
***********************************************************/
add_action('template_redirect', 'member_page0');
function member_page0(){
if(is_page(array(1425,1431)) && usces_the_member_status() != 0 ){
wp_redirect(get_permalink(1495));
exit;
}
}
この他に、会員ランク別に同じパターンで記述しています。
もう一つ、会員ページに会員ランクや会員ランクによって別々のページリンクを表示させていますが、こちらも複数の会員ランクがテキストで表示されてしまいます。
<div class="vip_contents">
<div class="member_lank alert alert-info">
<span>お客様の会員ランク:
<?php if (usces_is_login()) : ?>
<?php if (usces_the_member_status()==0) : ?>通常メンバー<?php endif; ?>
<?php if (usces_the_member_status()==1) : ?>優良メンバー<?php endif; ?>
<?php if (usces_the_member_status()==2) : ?>VIPメンバー<?php endif; ?>
<?php endif; ?>
</span>
</div>
<div class="member_info">
<?php if (usces_is_login()) : ?>
<?php if (usces_the_member_status()==0) : ?>
/member" target="_blank>" >通常メンバー様専用ページ
<?php endif; ?>
<?php if (usces_the_member_status()==1) : ?>
/excellent" target="_blank>" >優良メンバー様専用ページへ
<?php endif; ?>
<?php if (usces_the_member_status()==2) : ?>
/vip" target="_blank>" >VIPメンバー様専用ページ
<?php endif; ?>
<?php endif; ?>
</div>
</div>
分かり辛いかもしれませんがよろしくお願いいたします。
会員ランク別にコンテンツやページリンクなどを表示するマニュアルなどがあれば助かります。
2013年4月4日 7:26 AM #66448yskysmrキーマスターusces_the_member_status( ‘return’ )
としてみてください。引数が空白の場合 echo されます。
2013年4月4日 7:49 AM #66449sebastian参加者yskysmr様
修正しましたところ表示が正常に戻りました。ランク別に表示していたページの左上に表示されていた会員ランクのテキストも消えました。ありがとうございます。
しかし、どのランクでログインしてもランク0(通常会員)で表示されているようです…。
usces_the_member_status('return')==0
usces_the_member_status('return')==1
usces_the_member_status('return')==2
が実際の会員ランクと連動していないようにみえるのですが。
2013年4月9日 1:40 AM #66450yskysmrキーマスター失礼しました。
「usces_the_member_status」は、「ランク名」を返す関数でした。「ランク名」を表示するために作った関数です。
ということで、
usces_the_member_status(‘return’) == ‘通常会員’
というふうに、使用していただけますでしょうか。
よろしくお願いいたします。
2013年4月9日 1:52 AM #66451sebastian参加者ありがとうございます!無事解決致しました!
2013年4月9日 2:15 AM #66452sebastian参加者すみません。
確認ですが、ログインしていないユーザーのランク名は「ログインしていないユーザー」なのでしょうか?それともランク名自体がないのでしょうか?
2013年4月9日 4:54 AM #66453yskysmrキーマスター会員システムを使っていない、もしくはログインしていないときの、「ランク名」は存在しません。
よって、
empty( usces_the_member_status(‘return’) )
のときとしてみてください。
2013年4月9日 5:05 AM #66454sebastian参加者ありがとうございました!
2015年4月3日 3:10 PM #73877steve-n参加者ありがとうございます
<?php if (usces_the_member_status( ‘return’ )== ‘特別会員’) : ?>
特別会員への内容ここに表示
<?php endif; ?>上記の記事を参考にすると
こういうことでしょうか?
上記では会員ランクしか表示されません
よろしくお願いします※以前、welcartレスキューで会員ランクによる割引を設定していただき、特別会員という名前になっています。
2015年4月3日 3:12 PM #73878steve-n参加者すいません上記間違ってコメントしてしましました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。