| 1 |
<?php |
| 2 |
/** |
| 3 |
* Retrieve plugin option value(s). |
| 4 |
* |
| 5 |
* @author Mahdi Yazdani |
| 6 |
* @package Woo Additional Terms |
| 7 |
* @since 1.0 |
| 8 |
*/ |
| 9 |
/** |
| 10 |
* Display Additioanl Terms checkbox in checkout page. |
| 11 |
* |
| 12 |
*@since 1.0 |
| 13 |
*/ |
| 14 |
if (!function_exists('woo_additional_terms_checkout_checkbox')): |
| 15 |
function woo_additional_terms_checkout_checkbox() { |
| 16 |
// Retrieve plugin option value(s) |
| 17 |
$woo_additional_terms_page = ( get_option( 'woo_additional_terms_page' ) ) ? esc_attr( get_option( 'woo_additional_terms_page' ) ) : ''; |
| 18 |
$woo_additional_terms_title = ( get_option( 'woo_additional_terms_title' ) ) ? esc_attr( get_option( 'woo_additional_terms_title' ) ) : ''; |
| 19 |
$woo_additional_terms_notice = ( get_option( 'woo_additional_terms_notice' ) ) ? esc_attr( get_option( 'woo_additional_terms_notice' ) ) : ''; |
| 20 |
$woo_additional_terms_link_shortcode = '%link%'; |
| 21 |
if( isset($woo_additional_terms_notice) && !empty($woo_additional_terms_notice) ): |
| 22 |
echo '<p class="form-row terms">' . PHP_EOL; |
| 23 |
echo '<input type="checkbox" class="input-checkbox" name="woo-additional-terms-checkbox" id="woo-additional-terms-checkbox" />' . PHP_EOL; |
| 24 |
if( strpos($woo_additional_terms_notice, $woo_additional_terms_link_shortcode) !== false && isset($woo_additional_terms_page, $woo_additional_terms_title) && !empty($woo_additional_terms_page) && !empty($woo_additional_terms_title) ) : |
| 25 |
echo '<label for="woo-additional-terms-checkbox" class="checkbox">' . str_replace( '%link%', '<a href="' . get_permalink($woo_additional_terms_page) . '" target="_blank">' . $woo_additional_terms_title . '</a>', $woo_additional_terms_notice ) . ' <span class="required">*</span></label>' . PHP_EOL; |
| 26 |
else: |
| 27 |
echo '<label for="woo-additional-terms-checkbox" class="checkbox">' . str_replace( '%link%', '', $woo_additional_terms_notice ) . ' <span class="required">*</span></label>' . PHP_EOL; |
| 28 |
endif; |
| 29 |
echo '</p>' . PHP_EOL; |
| 30 |
endif; |
| 31 |
} |
| 32 |
endif; |
| 33 |
add_action('woocommerce_review_order_before_submit', 'woo_additional_terms_checkout_checkbox', 5); |
| 34 |
/** |
| 35 |
* Display custom error message whenever customer didn't accept additional terms. |
| 36 |
* |
| 37 |
*@since 1.0 |
| 38 |
*/ |
| 39 |
if (!function_exists('woo_additional_terms_checkout_notice_error')): |
| 40 |
function woo_additional_terms_checkout_notice_error() { |
| 41 |
// Retrieve plugin option value(s) |
| 42 |
$woo_additional_terms_notice = ( get_option( 'woo_additional_terms_notice' ) ) ? esc_attr( get_option( 'woo_additional_terms_notice' ) ) : ''; |
| 43 |
$woo_additional_terms_notice_error = ( get_option( 'woo_additional_terms_notice_error' ) ) ? esc_attr( get_option( 'woo_additional_terms_notice_error' ) ) : __('You must accept our additional terms.', 'woo-additional-terms'); |
| 44 |
if ( !isset($woo_additional_terms_notice, $_POST['woo-additional-terms-checkbox']) && !empty($woo_additional_terms_notice) ): |
| 45 |
wc_add_notice( $woo_additional_terms_notice_error, 'error' ); |
| 46 |
endif; |
| 47 |
} |
| 48 |
endif; |
| 49 |
add_action('woocommerce_checkout_process', 'woo_additional_terms_checkout_notice_error'); |
| 50 |
/** |
| 51 |
* Update the order meta with Woo Additional Terms value. |
| 52 |
* |
| 53 |
*@since 1.0 |
| 54 |
*/ |
| 55 |
if (!function_exists('woo_additional_terms_field_update_order_meta')): |
| 56 |
function woo_additional_terms_field_update_order_meta( $order_id ) { |
| 57 |
// Retrieve plugin option value(s) |
| 58 |
$woo_additional_terms_notice = ( get_option( 'woo_additional_terms_notice' ) ) ? esc_attr( get_option( 'woo_additional_terms_notice' ) ) : ''; |
| 59 |
if ( isset($woo_additional_terms_notice, $_POST['woo-additional-terms-checkbox']) && !empty($woo_additional_terms_notice) ): |
| 60 |
update_post_meta( $order_id, 'woo-additional-terms-checkbox', sanitize_text_field( $_POST['woo-additional-terms-checkbox'] ) ); |
| 61 |
endif; |
| 62 |
} |
| 63 |
endif; |
| 64 |
add_action( 'woocommerce_checkout_update_order_meta', 'woo_additional_terms_field_update_order_meta' ); |