Secura Vita

Category: Works , WordPress , Plugins
Works

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

完成

マイページトップ

welcart:購入履歴を別ページにする

購入履歴

welcart:購入履歴を別ページにする

おもしろかった・役に立った
▼ブログランキング参加中!クリック!▼
  • ブログランキング・にほんブログ村へ

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ソースコードを記入する場合は [code]~[/code] でくくってください。
[code]
echo "Hello World";
[/code]

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください