Browse: Home / Hooks /

learndash-course-payment-buttons-after

do_action( 'learndash-course-payment-buttons-after',  int $course_id,  int $user_id )

Fires after the course payment button.


Description #


Parameters #

$course_id

(int) Course ID.

$user_id

(int) User ID.


Source #

File: themes/legacy/templates/course.php


Examples #

Note: Extended code example below not guaranteed, you may need to consult with a developer

 <?php
/**
 * Example usage for learndash-course-payment-buttons-after action.
 */
add_action(
	'learndash-course-payment-buttons-after',
	function( $course_id = 0, $user_id ) {
		// We really only need this for Courses with 'Buy Now' (paynow) price type. This is because
		// when using PayPal (or Stripe) there will be a user created.
		$course_price_type = learndash_get_setting( $course_id, 'course_price_type' );

		// New in WordPress 4.9.6.
		if ( function_exists( 'get_privacy_policy_url' ) ) {
			$privacy_policy_url = get_privacy_policy_url();
		} else {
			$privacy_policy_url = '';
		}

		if ( ( 'paynow' === $course_price_type ) && ( ! empty( $privacy_policy_url ) ) ) {
			// Check if the user is not logged in. If the user is already authenticated it
			// is assumed they has already consented to how data is used.
			if ( ! is_user_logged_in() ) {
				?>
			<p class="join-form-consent-container" style="display:none;"><input type="checkbox" class="join-form-consent-checkbox" />I agree with the <a target="_blank" href="<?php echo $privacy_policy_url; ?>">terms and conditions</a>.</p>
				<?php

				add_action(
					'wp_footer',
					function() {
						?>
				<style>
					.learndash_checkout_buttons input.btn-join:disabled { color: #ccc !important; }
				</style>
				<script>
					var learndash_consent_callback = function() {

						// Vanilla JS.
						var consent_container = document.querySelector(".join-form-consent-container");
						var consent_checkbox = document.querySelector(".join-form-consent-container input.join-form-consent-checkbox");
						var join_button = document.querySelector(".learndash_checkout_buttons input.btn-join");

						if ( ( join_button ) && ( consent_container ) && ( consent_checkbox ) ) {
							// Disable the main 'Take this Course' button
							join_button.setAttribute( 'disabled', true );

							// Then show our consent block containing the checkbox
							consent_container.style.display = "block";

							// When the consent checkbox is checked we re-enable the course submit							
							consent_checkbox.addEventListener( 'change', function() {
								if ( this.checked ) {
									// Checkbox is checked.
									join_button.removeAttribute( 'disabled' );
								} else {
									// Checkbox is not checked.
									join_button.setAttribute( 'disabled', true );
								}
							});
						} 

						// Alternate jQuery version
						/*
						var consent_container = jQuery(".join-form-consent-container");
						var consent_checkbox = jQuery(".join-form-consent-container input.join-form-consent-checkbox");
						var join_button = jQuery(".learndash_checkout_buttons input.btn-join");

						if ( ( join_button ) && ( consent_container ) && ( consent_checkbox ) ) {
							// Disable the main 'Take this Course' button
							join_button.attr('disabled', true );
							
							// Then show our consent block containing the checkbox
							consent_container.show();

							// When the consent checkbox is checked we re-enable the course submit							
							consent_checkbox.change( function() {
								if( jQuery(this).is(':checked' ) ) {
									// Checkbox is checked..
									join_button.attr('disabled', false );
								} else {
									// Checkbox is not checked..
									join_button.attr('disabled', true );
								}
							});
						}
						*/
					};
					
					// Vanilla JS for jQuery .ready() function. Got to be a better way. 
					if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
					  learndash_consent_callback();
					} else {
					  document.addEventListener("DOMContentLoaded", learndash_consent_callback);
					}
					
					
					// Alternate using jQuery
					//jQuery(document).ready( learndash_consent_callback);
					
				</script>
						<?php
					}
				);
			}
		}
	},
	10,
	2
);
 

Changelog #

Changelog
Version Description
2.5.8 Introduced.