php [约会] - 额外的字段费用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php [约会] - 额外的字段费用相关的知识,希望对你有一定的参考价值。

<?php
/*
Plugin Name: [Appointments] - Additional Fields Cost
Plugin URI: https://premium.wpmudev.org/
Description: Additional Fields add cost to Appointment
Author: Panos Lyrakis @ WPMUDEV
Author URI: https://premium.wpmudev.org/
License: GPLv2 or later
*/

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! class_exists( 'WPMUDEV_App_Additional_Fields_Cost' ) ) {
	
	class WPMUDEV_App_Additional_Fields_Cost {
		private static $_instance = null;
		private $additional_price;
		private $currency;
		private $field;

		public static function get_instance() {

			if( is_null( self::$_instance ) ) {
				self::$_instance = new WPMUDEV_App_Additional_Fields_Cost();
			}

			return self::$_instance;
		}

		public function __construct() {

			add_action( 'init', array( $this, 'init_vars' ) );
			add_action( 'wp_footer', array( $this, 'js_add_cost' ) );
			
			add_filter( 'app_post_confirmation_price', array( $this, 'paypal_price' ) );
			add_filter( 'app_post_confirmation_paypal_price', array( $this, 'paypal_price' ) );
		}


		public function init_vars () {
			$this->additional_price = 10;
			$this->field = 'coffee';
			$this->currency = appointments_get_option( 'currency' );
		}

		public function paypal_price( $price ) {

			$additional_fields = isset( $_POST['additional_fields'] ) ? $_POST['additional_fields'] : array();

			if( isset( $additional_fields[ $this->field ] ) ){
				$price += $this->additional_price;
			}

			return $price;
		}


		public function js_add_cost() {

			?>
			<script type="text/javascript">
				(function($) {
					$(document).ready(function() {
						var field = $( '.appointments-<?php echo $this->field; ?>-field-entry' );
						field.on( 'change', function() {
							let price_holder = $( '.appointments-confirmation-price' ),
								additional_price = '<?php echo $this->additional_price; ?>',
								currency = '<?php echo $this->currency; ?>',
								new_price_str = $( '<div />', {
								'class' : 'appointments-additional-price'
								});

								
							if ( this.checked ) {
								new_price_str.html( '<label><span>Additional price</span>'+ additional_price +' ' + currency + '</label>' );
								price_holder.after( new_price_str );
							}
							else {
								$( '.appointments-additional-price' ).fadeOut( 400, function(){ $(this).remove(); } );
							}

						});
					});
				})(jQuery);
			</script>
			<?php

		}

	}

	add_action( 'plugins_loaded', function(){
		$GLOBALS['WPMUDEV_App_Additional_Fields_Cost'] = WPMUDEV_App_Additional_Fields_Cost::get_instance();
	}, 10 );

}

以上是关于php [约会] - 额外的字段费用的主要内容,如果未能解决你的问题,请参考以下文章

woocommerce 中每个类别的额外费用

php [约会+] - 在确认页面中强制配置文件字段为空

php [约会] - 其他自定义字段演示。有关如何在Appointments Lite中添加自定义字段的指南

添加一个结帐复选框字段,在 Woocommerce 中启用百分比费用

BZOJ 1834--网络扩容(最大流&费用流)

php [订阅]与巴西WooCommerce额外结帐字段的兼容性