LifterLMS 銀行振り込みなどで登録日とアクティブ日が異なる場合のカスタマイズ例

HanamiWEBオンラインスクールでは

●バーチャル自習室でのリアルタイム質問!

●チャットで質問し放題!

●24時間学び放題のEラーニング教材!

全部ついて 2,500円/月!

wordpressのプラグインを使ってEラーニングサイトが作れるLifterLMSについて解説をしています。
今回は、クレジット決済の場合は登録日=利用開始日となるので問題がないのですが、銀行振り込みの場合、登録日と実際に受講開始日が異なるという問題が生じます。

解決案

①まずは銀行振込をしてもらう
②入金が確認出来たら登録URLを教えて登録をしてもらう

無料設定にしておけば登録と同時に受講開始が出来るので、登録日と受講開始日のずれは生じないです。

カスタマイズせずに解決する事が出来るのですが、プラグインをカスタマイズしてアクティブになった日をサイトに表示させることに成功したので覚書です。


LifterLMSで生徒さんが銀行振込決済をした場合の問題点

銀行振込が確認でいた後、ダッシュボードにある「注文」という箇所から手動でアクティブに注文ステータスを変えます。

受講生は注文ステータスがアクティブになっていないと受講開始できないので、誤差が生じます。

アクティブになった日付を取得するコードスニペット

 wp-content/plugins/lifterlms/templates/loop/enroll-date.phpのテンプレートファイルを修正します。

直接修正するのは危険なので、子テーマにenroll-date.phpをコピーして作業をします。

① wp-content/plugins/lifterlms/templates/loop/enroll-date.php をダウンロード
② wp-content/themes/使用テーマファイル/lifterrlms/loop/enroll-date.php になるようにアップロード

戻のコードは以下です。

defined( 'ABSPATH' ) || exit;

$student = llms_get_student();
if ( ! $student ) {
	return;
}

?>
<div class="llms-meta llms-enroll-date">
	<p>
	<?php
	printf(
		// Translators: %s = Enrollment date.
		esc_html__( 'Enrolled: %s', 'lifterlms' ),
		esc_html( $student->get_enrollment_date( get_the_ID() ) )
	);
	?>
	</p>
</div>

カスタマイズコード

defined( 'ABSPATH' ) || exit;

$student = llms_get_student();
if ( ! $student ) {
	return;
}

?>
<div class="llms-meta llms-enroll-date">
	<p>
		<?php
$active_date = trim(get_post_meta( 
	array_map('intval', preg_match_all('/\d+/', $student->get_enrollment_trigger( get_the_ID() ), $matches) ? $matches[0] : [null])[0], 
	'active_date', 
	true
));

printf(
	// Translators: %s = Enrollment date.
	esc_html__( 'Enrolled: %s', 'lifterlms' ),
	esc_html( $active_date ? $active_date : $student->get_enrollment_date( get_the_ID() ) )
);
?>
	</p>
</div>

このように書き換えます。
上部のコードでacrive_dateを取得し、下部でactive_dateがあった場合は登録日を書き換えるように指示を出しています。

どこが変わるのか

ユーザーマイページ > 注文履歴の詳細ページにあるデータが変わります。
添付する画像の翻訳を変えてしまっているのですが、元は「Start Date」が原文となっている「開始日」になります。

active_dateがある場合、日付が書き換わる仕組みになっています。

注文詳細テーブルにアクティブデータを1行追加するコード

更にカスタマイズをしました。
function.phpに以下のコードを追加します。

function lifterlms_view_order_table_body_cb( $order ) {
	?>
		<tr>
		    <th><?php esc_html_e( '利用開始日', 'lifterlms' ); ?></th>
		    <td>
			<?php
		        $student = new LLMS_Student( $order->get( 'user_id' ) );
				$active_date = trim(get_post_meta( 
					$order->get( 'id' ),
					'active_date', 
					true
				));

				echo esc_html( $active_date ? $active_date : $student->get_enrollment_date( $order->get( 'product_id' ) ) );
			?>
		    </td>
		</tr>
	<?php
}

add_action( "lifterlms_view_order_table_body", "lifterlms_view_order_table_body_cb", 10, 1 );

注文詳細ページのテーブル10行目にactive_date行を追加するコードです。

このようにする事で、注文日と有効になった日を別々に出力する事が出来るようになりました。

カスタムフィールドでご利用開始日値を管理

実は、function.phpに追加したコードは、注文確認画面のカスタムフィールドと連動させています。

  • 名前:active_date
  • 値:好きな文字列

このように追加をすると、注文詳細ページのテーブル内に出力している「ご利用開始日」の右側の値をカスタムフィールドで入力した値が反映されます。

ホームページのリスキリングはお任せください!

2019年よりWordPressやホームページに関するスキルシェアを行ってきました。事例やノウハウが蓄積され、スピーディーかつ的確にお悩みを解決へと導く事を得意としています。ホームページに関するお悩みがございましたら、LINE公式アカウントよりお気軽にご相談ください!

↑クリックするとLINE公式が開きます

新着記事

LifterLMSのシステム自動出力ページのカスタマイズ方法を解説
LifterLMS 銀行振り込みなどで登録日とアクティブ日が異なる場合のカスタマイズ例
(解決済)WordPressから送信されるGmail宛のメールだけ送られない【ロリポップ】
WordPress予約システムAmeliaのパッケージ(回数券)設定を解説
WP Rocket - WordPress Caching Plugin
ja日本語