welcart:購入履歴を別ページにする
Tag: Welcart
welcartの購入履歴は会員情報と同じページにありますし、ボックス内のスクロールなのでちょっと使いにくいなぁと思ってました。
なのでページを分けたいと思います。
マイページと購入履歴をわける
まずマイページ用のテンプレートと購入履歴用のテンプレートを作成します。
ここではフリーテーマのWelcart Basic(1.8.1)を使って説明します。
※配布されているテーマをカスタマイズする場合は必ず子テーマで行ってください。
まず、wc_templatesにあるwc_member_page.phpを複製し、名前をwc_member_history.phpとしておきます。
wc_member_page.phpの中の購入履歴部分を削除します。
<h3><?php esc_html_e( 'Purchase history', 'usces' ); ?></h3> <div class="currency_code"><?php esc_html_e( 'Currency', 'usces' ); ?> : <?php usces_crcode(); ?></div> <?php usces_member_history(); ?>
この部分です。
wc_member_history.phpは逆にこの部分以外削除します。
その上でマイページトップへのリンクを付けときます。
テンプレートファイルの中身はこんな感じです。
<?php /** * Member History Template * * @package Welcart * @subpackage Welcart_Basic */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" class="member-page" role="main"> <?php if ( have_posts() ) : usces_remove_filter(); ?> <article class="post" id="wc_<?php usces_page_name(); ?>"> <h1 class="member_page_title"><?php esc_html_e( 'My page', 'welcart_basic' ); ?></h1> <div id="memberpages"> <div class="whitebox"> <div id="memberinfo"> <ul class="member_submenu"> <li><a href="<?php echo USCES_MEMBER_URL; ?>">マイページトップへ戻る</a></li> </ul> <h3><?php esc_html_e( 'Purchase history', 'usces' ); ?></h3> <div class="currency_code"><?php esc_html_e( 'Currency', 'usces' ); ?> : <?php usces_crcode(); ?></div> <?php usces_member_history(); ?> </div><!-- #memberinfo --> </div><!-- .whitebox --> </div><!-- #memberpages --> </article><!-- .post --> <?php else : ?> <p><?php esc_html_e( 'Sorry, no posts matched your criteria.', 'usces' ); ?></p> <?php endif; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_footer(); ?>
関数
あとはfunctions.phpに関数を設定します。
テンプレートの切り替え
URLクエリに「usces_history」があればテンプレートを切り替えるという処理です。
add_action( 'template_redirect', 'change_history_template' ); function change_history_template() { if( is_page( 'usces-member' ) && isset( $_GET['usces_history'] ) ) { get_template_part( 'wc_templates/member/wc_member_history'); exit; } }
購入履歴へのリンクを追加
リンクを貼らないと購入履歴が見れないのでその設定です。
サブメニューにリンクを追加するフック「usces_action_member_submenu_list」があるのでそれを使用します。
add_action( 'usces_action_member_submenu_list', 'custom_member_submenu_list' ); function custom_member_submenu_list() { echo '<li><a href="'.USCES_MEMBER_URL.'?usces_history">購入履歴 》</a></li>'; }
購入履歴の「キャンセルを除外」と「期間」のURLを変更
キャンセルを除外と期間のURLも書き換えてやらないとマイページトップに戻ってしまうので変更します。
この部分はusces_load_filter_purchase_dateという関数で処理されていて、その中でこの部分のURLには「#usces_history」というハッシュが追加されているのでそれを「&usces_history」に変更します。
add_filter( 'usces_filter_member_history_top_navi', 'cistom_member_history_top_navi' ); function cistom_member_history_top_navi( $content ) { return str_replace( '#usces_history', '&usces_history', $content ); }
スタイルの調整
デフォルトでは購入履歴はボックスの中でスクロールしているのでそれを無効にします。
#memberinfo .history-area { max-height: none!important; overflow: auto!important; }
完成
マイページトップ
購入履歴