WC_Meta_Box_Coupon_Data::output PHP Method

output() public static method

Output the metabox.
public static output ( WP_Post $post )
$post WP_Post
    public static function output($post)
    {
        wp_nonce_field('woocommerce_save_data', 'woocommerce_meta_nonce');
        $coupon = new WC_Coupon($post->ID);
        ?>
		<style type="text/css">
			#edit-slug-box, #minor-publishing-actions { display:none }
		</style>
		<div id="coupon_options" class="panel-wrap coupon_data">

			<div class="wc-tabs-back"></div>

			<ul class="coupon_data_tabs wc-tabs" style="display:none;">
				<?php 
        $coupon_data_tabs = apply_filters('woocommerce_coupon_data_tabs', array('general' => array('label' => __('General', 'woocommerce'), 'target' => 'general_coupon_data', 'class' => 'general_coupon_data'), 'usage_restriction' => array('label' => __('Usage restriction', 'woocommerce'), 'target' => 'usage_restriction_coupon_data', 'class' => ''), 'usage_limit' => array('label' => __('Usage limits', 'woocommerce'), 'target' => 'usage_limit_coupon_data', 'class' => '')));
        foreach ($coupon_data_tabs as $key => $tab) {
            ?>
<li class="<?php 
            echo $key;
            ?>
_options <?php 
            echo $key;
            ?>
_tab <?php 
            echo implode(' ', (array) $tab['class']);
            ?>
">
							<a href="#<?php 
            echo $tab['target'];
            ?>
"><?php 
            echo esc_html($tab['label']);
            ?>
</a>
						</li><?php 
        }
        ?>
			</ul>
			<div id="general_coupon_data" class="panel woocommerce_options_panel"><?php 
        // Type
        woocommerce_wp_select(array('id' => 'discount_type', 'label' => __('Discount type', 'woocommerce'), 'options' => wc_get_coupon_types()));
        // Amount
        woocommerce_wp_text_input(array('id' => 'coupon_amount', 'label' => __('Coupon amount', 'woocommerce'), 'placeholder' => wc_format_localized_price(0), 'description' => __('Value of the coupon.', 'woocommerce'), 'data_type' => 'price', 'desc_tip' => true));
        // Free Shipping
        woocommerce_wp_checkbox(array('id' => 'free_shipping', 'label' => __('Allow free shipping', 'woocommerce'), 'description' => sprintf(__('Check this box if the coupon grants free shipping. A <a href="%s" target="_blank">free shipping method</a> must be enabled in your shipping zone and be set to require "a valid free shipping coupon" (see the "Free Shipping Requires" setting).', 'woocommerce'), 'https://docs.woocommerce.com/document/free-shipping/')));
        // Expiry date
        $expiry_date = $coupon->get_date_expires() ? date('Y-m-d', $coupon->get_date_expires()) : '';
        woocommerce_wp_text_input(array('id' => 'expiry_date', 'value' => esc_attr($expiry_date), 'label' => __('Coupon expiry date', 'woocommerce'), 'placeholder' => esc_attr__('YYYY-MM-DD', 'woocommerce'), 'description' => '', 'class' => 'date-picker', 'custom_attributes' => array('pattern' => "[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])")));
        do_action('woocommerce_coupon_options');
        ?>
</div>
			<div id="usage_restriction_coupon_data" class="panel woocommerce_options_panel"><?php 
        echo '<div class="options_group">';
        // minimum spend
        woocommerce_wp_text_input(array('id' => 'minimum_amount', 'label' => __('Minimum spend', 'woocommerce'), 'placeholder' => __('No minimum', 'woocommerce'), 'description' => __('This field allows you to set the minimum spend (subtotal, including taxes) allowed to use the coupon.', 'woocommerce'), 'data_type' => 'price', 'desc_tip' => true));
        // maximum spend
        woocommerce_wp_text_input(array('id' => 'maximum_amount', 'label' => __('Maximum spend', 'woocommerce'), 'placeholder' => __('No maximum', 'woocommerce'), 'description' => __('This field allows you to set the maximum spend (subtotal, including taxes) allowed when using the coupon.', 'woocommerce'), 'data_type' => 'price', 'desc_tip' => true));
        // Individual use
        woocommerce_wp_checkbox(array('id' => 'individual_use', 'label' => __('Individual use only', 'woocommerce'), 'description' => __('Check this box if the coupon cannot be used in conjunction with other coupons.', 'woocommerce')));
        // Exclude Sale Products
        woocommerce_wp_checkbox(array('id' => 'exclude_sale_items', 'label' => __('Exclude sale items', 'woocommerce'), 'description' => __('Check this box if the coupon should not apply to items on sale. Per-item coupons will only work if the item is not on sale. Per-cart coupons will only work if there are no sale items in the cart.', 'woocommerce')));
        echo '</div><div class="options_group">';
        // Product ids
        ?>
				<p class="form-field"><label><?php 
        _e('Products', 'woocommerce');
        ?>
</label>
				<input type="hidden" class="wc-product-search" data-multiple="true" style="width: 50%;" name="product_ids" data-placeholder="<?php 
        esc_attr_e('Search for a product&hellip;', 'woocommerce');
        ?>
" data-action="woocommerce_json_search_products_and_variations" data-selected="<?php 
        $product_ids = $coupon->get_product_ids();
        $json_ids = array();
        foreach ($product_ids as $product_id) {
            $product = wc_get_product($product_id);
            if (is_object($product)) {
                $json_ids[$product_id] = wp_kses_post($product->get_formatted_name());
            }
        }
        echo esc_attr(json_encode($json_ids));
        ?>
" value="<?php 
        echo implode(',', array_keys($json_ids));
        ?>
" /> <?php 
        echo wc_help_tip(__('Products which need to be in the cart to use this coupon or, for "Product Discounts", which products are discounted.', 'woocommerce'));
        ?>
</p>
				<?php 
        // Exclude Product ids
        ?>
				<p class="form-field"><label><?php 
        _e('Exclude products', 'woocommerce');
        ?>
</label>
				<input type="hidden" class="wc-product-search" data-multiple="true" style="width: 50%;" name="exclude_product_ids" data-placeholder="<?php 
        esc_attr_e('Search for a product&hellip;', 'woocommerce');
        ?>
" data-action="woocommerce_json_search_products_and_variations" data-selected="<?php 
        $product_ids = $coupon->get_excluded_product_ids();
        $json_ids = array();
        foreach ($product_ids as $product_id) {
            $product = wc_get_product($product_id);
            if (is_object($product)) {
                $json_ids[$product_id] = wp_kses_post($product->get_formatted_name());
            }
        }
        echo esc_attr(json_encode($json_ids));
        ?>
" value="<?php 
        echo implode(',', array_keys($json_ids));
        ?>
" /> <?php 
        echo wc_help_tip(__('Products which must not be in the cart to use this coupon or, for "Product Discounts", which products are not discounted.', 'woocommerce'));
        ?>
</p>
				<?php 
        echo '</div><div class="options_group">';
        // Categories
        ?>
				<p class="form-field"><label for="product_categories"><?php 
        _e('Product categories', 'woocommerce');
        ?>
</label>
				<select id="product_categories" name="product_categories[]" style="width: 50%;"  class="wc-enhanced-select" multiple="multiple" data-placeholder="<?php 
        esc_attr_e('Any category', 'woocommerce');
        ?>
">
					<?php 
        $category_ids = $coupon->get_product_categories();
        $categories = get_terms('product_cat', 'orderby=name&hide_empty=0');
        if ($categories) {
            foreach ($categories as $cat) {
                echo '<option value="' . esc_attr($cat->term_id) . '"' . selected(in_array($cat->term_id, $category_ids), true, false) . '>' . esc_html($cat->name) . '</option>';
            }
        }
        ?>
				</select> <?php 
        echo wc_help_tip(__('A product must be in this category for the coupon to remain valid or, for "Product Discounts", products in these categories will be discounted.', 'woocommerce'));
        ?>
</p>
				<?php 
        // Exclude Categories
        ?>
				<p class="form-field"><label for="exclude_product_categories"><?php 
        _e('Exclude categories', 'woocommerce');
        ?>
</label>
				<select id="exclude_product_categories" name="exclude_product_categories[]" style="width: 50%;"  class="wc-enhanced-select" multiple="multiple" data-placeholder="<?php 
        esc_attr_e('No categories', 'woocommerce');
        ?>
">
					<?php 
        $category_ids = $coupon->get_excluded_product_categories();
        $categories = get_terms('product_cat', 'orderby=name&hide_empty=0');
        if ($categories) {
            foreach ($categories as $cat) {
                echo '<option value="' . esc_attr($cat->term_id) . '"' . selected(in_array($cat->term_id, $category_ids), true, false) . '>' . esc_html($cat->name) . '</option>';
            }
        }
        ?>
				</select> <?php 
        echo wc_help_tip(__('Product must not be in this category for the coupon to remain valid or, for "Product Discounts", products in these categories will not be discounted.', 'woocommerce'));
        ?>
</p>
				<?php 
        echo '</div><div class="options_group">';
        // Customers
        woocommerce_wp_text_input(array('id' => 'customer_email', 'label' => __('Email restrictions', 'woocommerce'), 'placeholder' => __('No restrictions', 'woocommerce'), 'description' => __('List of allowed emails to check against the customer\'s billing email when an order is placed. Separate email addresses with commas.', 'woocommerce'), 'value' => implode(', ', (array) get_post_meta($post->ID, 'customer_email', true)), 'desc_tip' => true, 'type' => 'email', 'class' => '', 'custom_attributes' => array('multiple' => 'multiple')));
        echo '</div>';
        do_action('woocommerce_coupon_options_usage_restriction');
        ?>
</div>
			<div id="usage_limit_coupon_data" class="panel woocommerce_options_panel"><?php 
        echo '<div class="options_group">';
        // Usage limit per coupons
        woocommerce_wp_text_input(array('id' => 'usage_limit', 'label' => __('Usage limit per coupon', 'woocommerce'), 'placeholder' => esc_attr__('Unlimited usage', 'woocommerce'), 'description' => __('How many times this coupon can be used before it is void.', 'woocommerce'), 'type' => 'number', 'desc_tip' => true, 'class' => 'short', 'custom_attributes' => array('step' => 1, 'min' => 0), 'value' => $coupon->get_usage_limit() ? $coupon->get_usage_limit() : ''));
        // Usage limit per product
        woocommerce_wp_text_input(array('id' => 'limit_usage_to_x_items', 'label' => __('Limit usage to X items', 'woocommerce'), 'placeholder' => esc_attr__('Apply to all qualifying items in cart', 'woocommerce'), 'description' => __('The maximum number of individual items this coupon can apply to when using product discounts. Leave blank to apply to all qualifying items in cart.', 'woocommerce'), 'desc_tip' => true, 'class' => 'short', 'type' => 'number', 'custom_attributes' => array('step' => 1, 'min' => 0), 'value' => $coupon->get_limit_usage_to_x_items() ? $coupon->get_limit_usage_to_x_items() : ''));
        // Usage limit per users
        woocommerce_wp_text_input(array('id' => 'usage_limit_per_user', 'label' => __('Usage limit per user', 'woocommerce'), 'placeholder' => esc_attr__('Unlimited usage', 'woocommerce'), 'description' => __('How many times this coupon can be used by an invidual user. Uses billing email for guests, and user ID for logged in users.', 'woocommerce'), 'desc_tip' => true, 'class' => 'short', 'type' => 'number', 'custom_attributes' => array('step' => 1, 'min' => 0), 'value' => $coupon->get_usage_limit_per_user() ? $coupon->get_usage_limit_per_user() : ''));
        echo '</div>';
        do_action('woocommerce_coupon_options_usage_limit');
        ?>
</div>
			<?php 
        do_action('woocommerce_coupon_data_panels');
        ?>
			<div class="clear"></div>
		</div>
		<?php 
    }

Usage Example

            /**
             * Form to show 'Auto generate Bulk Coupons' with other fields
             */
            public function admin_generate_bulk_coupons_and_export()
            {
                if (!$this->is_wc_gte_21()) {
                    echo '<p>' . __('This feature is available for WooCommerce 2.1 or later', self::$text_domain) . '</p>';
                    return;
                }
                global $woocommerce, $woocommerce_smart_coupon;
                if (!class_exists('WC_Meta_Box_Coupon_Data')) {
                    require_once $this->global_wc()->plugin_path() . '/includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php';
                }
                $upload_url = wp_upload_dir();
                $upload_path = $upload_url['path'];
                $assets_path = str_replace(array('http:', 'https:'), '', $this->global_wc()->plugin_url()) . '/assets/';
                if (isset($_POST['generate_and_import']) && !empty($_POST['smart_coupons_generate_action']) && $_POST['smart_coupons_generate_action'] == 'sc_export_and_import') {
                    $this->export_coupon($_POST, '', '');
                }
                ?>

				<script type="text/javascript">
					jQuery(function(){

						jQuery('input#generate_and_import').on('click', function(){

							if( jQuery('input#no_of_coupons_to_generate').val() == "" ){
								jQuery("div#message").removeClass("updated fade").addClass("error fade");
								jQuery('div#message p').html( "<?php 
                _e('Please enter a valid value for Number of Coupons to Generate', self::$text_domain);
                ?>
");
								return false;
							} else {
								jQuery("div#message").removeClass("error fade").addClass("updated fade").hide();
								return true;
							}
						});

					});
				</script>

				<div id="message"><p></p></div>
				<div class="tool-box">

					<h3 class="title"><?php 
                _e('Generate Coupons', self::$text_domain);
                ?>
 | <small><a href="<?php 
                echo trailingslashit(admin_url()) . 'admin.php?import=woocommerce_smart_coupon_csv';
                ?>
"><?php 
                echo __('Import Coupons', self::$text_domain);
                ?>
</a></small></h3>
					<p class="description"><?php 
                _e('You can bulk generate coupons using options below.', self::$text_domain);
                ?>
</p>

					<style type="text/css">
						#smart-coupon-action-panel p label {
							width: 18em;
						}
						#smart-coupon-action-panel {
							width: 100% !important;
						}
					</style>

					<form id="generate_coupons" action="<?php 
                echo admin_url('admin.php?import=woocommerce_smart_coupon_csv&step=2');
                ?>
" method="post">
						<?php 
                wp_nonce_field('import-woocommerce-coupon');
                ?>
						<div id="poststuff">
							<div id="woocommerce-coupon-data" class="postbox " >
								<h3><span><?php 
                echo __('Action', self::$text_domain);
                ?>
</span></h3>
								<div class="inside">
									<div class="panel-wrap">
										<div id="smart-coupon-action-panel" class="panel woocommerce_options_panel">

											<p class="form-field">
												<label><?php 
                echo __('Generate coupons &', self::$text_domain);
                ?>
</label>
												<input type="radio" name="smart_coupons_generate_action" value="add_to_store" id="add_to_store" checked="checked"/>&nbsp;
												<strong><?php 
                echo __('Add to store', self::$text_domain);
                ?>
</strong>
												<span class="description"><?php 
                _e('Adds generated coupons to store.', self::$text_domain);
                ?>
</span>
											</p>

											<p class="form-field">
												<label><?php 
                echo '&nbsp;';
                ?>
</label>
												<input type="radio" name="smart_coupons_generate_action" value="sc_export_and_import" id="sc_export_and_import" />&nbsp;
												<strong><?php 
                echo __('Export to CSV', self::$text_domain);
                ?>
</strong>
												<span class="description"><?php 
                _e('Downloads a .CSV file, which can be used for importing', self::$text_domain);
                ?>
</span>
											</p>

											<p class="form-field">
												<label><?php 
                echo '&nbsp;';
                ?>
</label>
												<input type="radio" name="smart_coupons_generate_action" value="woo_sc_is_email_imported_coupons" id="woo_sc_is_email_imported_coupons" />&nbsp;
												<strong><?php 
                echo __('Email to customer', self::$text_domain);
                ?>
</strong>
												<span class="description"><?php 
                _e('Send generated coupon codes to respective customer via email as well', self::$text_domain);
                ?>
</span>
											</p>

											<p class="form-field">
												<label for="no_of_coupons_to_generate"><?php 
                _e('Number of Coupons to Generate ', self::$text_domain);
                ?>
 *</label>
												<input type="number" name="no_of_coupons_to_generate" id="no_of_coupons_to_generate" placeholder="<?php 
                _e('10', self::$text_domain);
                ?>
" class="short" min="1" />
											</p>

										</div>
									</div>
								</div>
							</div>
							<div id="woocommerce-coupon-data" class="postbox " >
								<h3><span><?php 
                echo __('Coupon Data', self::$text_domain);
                ?>
</span></h3>
								<div class="inside">
									<?php 
                WC_Meta_Box_Coupon_Data::output(array());
                ?>
								</div>
							</div>
						</div>

						<p class="submit"><input id="generate_and_import" name="generate_and_import" type="submit" class="button button-primary" value="<?php 
                _e('Apply', self::$text_domain);
                ?>
" /></p>

					</form>
				</div>
				<?php 
            }
All Usage Examples Of WC_Meta_Box_Coupon_Data::output
WC_Meta_Box_Coupon_Data