ソニーペイメントサービスの2つの決済モジュール

【Auto Delivery】定期購入時のカート遷移中に会員登録フォームの表示カスタマイズ

WCEX Auto Deliveryを利用して定期購入を行った場合、カートでお客様情報入力ページに遷移するとログインフォームのみ表示されるのが仕様となっています。
お客様が新規会員登録をする場合は、「新規会員登録はこちら」をクリックし別ページにて会員登録を行っていただく必要があります。

今回はこのページにログインフォームだけではなく新規会員登録フォームを表示して、ユーザーに会員登録をしてもらいながら商品を購入していただくカスタマイズをご紹介します。

注意
ご紹介するサンプルコード等はWelcart Basicの場合になります。
Welcart Basic以外のテーマの場合は、行数や表示されるテンプレートタグが異なりますので紹介内容を参考に適宜カスタマイズ作業を行ってください。

新規登録フォームの表示

まずは、カート遷移中のお客様情報ページにて新規会員登録フォームを表示させます。

<?php if( !welcart_basic_have_ex_order() ) : ?>~<?php endif; ?>

36行目~38行目と66行目~104行目に上記条件タグでくくられている部分があります。
この部分は、WCEX DL Sellerを利用してサービス商品・ダウンロード商品・継続課金商品がカートに入っている、もしくはWCEX Auto Deliveryを利用して定期購入商品がカートに入っている場合に非表示にしています。
定期購入商品がカートに入っている場合に新規会員登録フォームを表示するためには、新しい条件分岐に置き換える必要があります。

新しい条件分岐を用意

定期購入商品を省いた条件分岐を新たに用意する必要があります。
下記コードをfunctions.phpの末尾などに追記してください。

function my_have_ex_order() {
	$ex_order = false;
	if ( defined( 'WCEX_DLSELLER' ) ) {
		$ex_order = ( ! dlseller_have_dlseller_content() && ! dlseller_have_continue_charge() ) ? false : true;
	} elseif ( defined( 'WCEX_AUTO_DELIVERY' ) ) {
		$ex_order = false;
	}
	
	return $ex_order;
}

条件分岐を置き換え

お客様情報入力ページでは、3箇所条件分岐がありますのですべて新しい条件分岐に置き換えます。

welcart_basic/wc_templates/cart/wc_customer_page.php 36行目

<?php if( !welcart_basic_have_ex_order() ) : ?>

   ↓

<?php if( !my_have_ex_order() ) : ?>

welcart_basic/wc_templates/cart/wc_customer_page.php 52行目

<?php if( welcart_basic_have_ex_order() ) : ?>

   ↓

<?php if( my_have_ex_order() ) : ?>

welcart_basic/wc_templates/cart/wc_customer_page.php 66行目

<?php if( !welcart_basic_have_ex_order() ) : ?>

   ↓

<?php if( !my_have_ex_order() ) : ?>

全ての修正が完了すると新規会員登録フォームが表示されます。

Welcart公式テーマ以外のテーマを利用している場合

Welcart公式テーマ以外の場合は、ほとんどの場合WCEX Auto Delivery同梱のwc_templatesを利用されていると思います。その場合は、下記コードが該当部分になります。

<?php if( ! wcad_have_regular_order() ) : ?>~<?php endif; ?>

非会員の時の「次へ」ボタンの非表示

定期購入商品の場合、指定した周期で自動的に料金を回収するため会員登録は必須になります。
新規登録フォームを表示しただけでは、非会員の状態で定期購入商品を購入できてしまうため「次へ」ボタンを非表示にするカスタマイズを行います。
下記コードをfunctions.phpの末尾などに追記してください。

add_filter( 'usces_filter_customer_button', 'my_customer_button', 10 );
function my_customer_button( $button ) {
	if( ! my_have_ex_order() ) {
		$button = '';
	}
	
	return $button;
}

カスタマイズが完了すると非会員は新規会員登録をしないと定期購入商品を購入できなくなります。

以上のカスタマイズで定期購入時のカート遷移中に会員登録フォームの表示カスタマイズが完了です。