autoship_print_product_custom_fields (function)
( src/product-page.php) Outputs custom fields for simple products.
Function
/** * Outputs the Autoship Custom Fields for a Product * @see woocommerce_product_options_autoship_product_data * * Outputs the following Autoship Custom Fields: * _autoship_schedule_options_enabled * _autoship_checkout_price * _autoship_recurring_price * _autoship_schedule_order_enabled * _autoship_schedule_process_enabled * _autoship_override_frequency_options * _autoship_override_product_data * _autoship_title_override * _autoship_weightunit_override * _autoship_lengthunit_override * _autoship_group_ids * * The following dynamically created fields are * controlled by the autoship_get_frequency_options_count() * _autoship_frequency_type_{$i} * _autoship_frequency_{$i} * _autoship_frequency_display_name_{$i} */ function autoship_print_product_custom_fields() { global $post; $_product = wc_get_product($post->ID); $active = 'yes' == autoship_sync_active_enabled( $_product ); $next_occurrence = autoship_get_product_relative_next_occurrence( $_product->get_id() ); $next_occurrence_type = autoship_get_product_relative_next_occurrence_type( $_product->get_id() ); $option_classes = apply_filters( 'autoship_simple_product_custom_fields_options_clases', 'show_if_simple hide_if_variable', $_product ); ?> <div id="autoship-main-edit-product-options" class="options_group"> <h4><?php echo __('Autoship Options', 'autoship'); ?></h4> <div class="options_group"> <?php // Only show option when Global Sync is Not Active if ( !autoship_global_sync_active_enabled() ):?> <?php // Enable schedule options woocommerce_wp_checkbox( array( 'id' => '_autoship_sync_active_enabled', 'label' => __('Activate Product Sync', 'autoship'), 'description' => __('Enable this setting to activate this product for Autoship Cloud Sync.', 'autoship'), ) );?> <?php endif;?> <div class="autoship-sync-active-option-group"> <?php // Enable schedule options woocommerce_wp_checkbox( array( 'id' => '_autoship_schedule_options_enabled', 'label' => __('Enable Schedule Options', 'autoship'), 'description' => __('Enable this setting to show Autoship Schedule Options on the product page.', 'autoship') ) );?> <?php do_action( 'autoship_before_print_product_custom_price_fields', $_product ); ?> <div class="<?php echo $option_classes; ?>"> <?php // Checkout price woocommerce_wp_text_input( array( 'id' => '_autoship_checkout_price', 'label' => sprintf(__('Autoship Checkout Price(%s)', 'autoship'), get_woocommerce_currency_symbol()), 'description' => __('Override the product price for autoship checkout only.', 'autoship'), 'placeholder' => __('(Optional)', 'autoship'), 'data_type' => 'price', 'desc_tip' => true ) );?> </div><!-- Checkout Price --> <div class="<?php echo $option_classes; ?>"> <?php // Recurring price woocommerce_wp_text_input( array( 'id' => '_autoship_recurring_price', 'label' => sprintf(__('Autoship Recurring Price(%s)', 'autoship'), get_woocommerce_currency_symbol()), 'description' => __('Override the product price for recurring orders only.', 'autoship'), 'placeholder' => __('(Optional)', 'autoship'), 'data_type' => 'price', 'desc_tip' => true ) );?> </div><!-- Recurring price --> <?php do_action( 'autoship_after_print_product_custom_price_fields', $_product ); ?> <?php // Only display the Schedule Orders Enabled and // Process on Scheduled orders options on this tab if // The product is simple otherwise display on variation level. if ( apply_filters( 'autoship_simple_product_display_scheduled_order_enabled_edit_fields', $_product->is_type('simple'), $_product ) ) { ?> </br> <h4><?php echo __('Autoship Scheduled Order Settings', 'autoship'); ?></h4> <p><?php echo __('Autoship Scheduled Order settings can be updated in <a target="_blank" href="'. admin_url( '/admin.php?page=products' ).'">Autoship Cloud > Products</a>', 'autoship'); ?></p> <?php //add_update_Schedule_option($_product->get_id()); // Enable This Product to be added to Scheduled Orders woocommerce_wp_checkbox( array( 'id' => '_autoship_schedule_order_enabled', 'label' => __('Add to Scheduled Order', 'autoship'), 'custom_attributes' => array('readonly' => 'readonly', 'disabled' => 'disabled'), 'description' => __(' Allow customers to add this product to existing Scheduled Orders.', 'autoship'), ) ); // Enable This Product to be Processed on Scheduled Orders woocommerce_wp_checkbox( array( 'id' => '_autoship_schedule_process_enabled', 'label' => __('Process on Scheduled Orders', 'autoship'), 'custom_attributes' => array('readonly' => 'readonly', 'disabled' => 'disabled'), 'description' => __(' Allow this product to process on Scheduled Orders. <a target="_blank" href="https://support.autoship.cloud/article/441-product-availability-and-stock-status">Read this</a> before disabling this setting.', 'autoship'), ) );?> <?php } ?> <?php do_action( 'autoship_after_print_product_custom_order_settings_fields', $_product ); ?> </div><!-- /.autoship-sync-active-option-group --> </div><!-- options_group --> <div class="autoship-sync-active-option-group"> <div class="<?php echo $option_classes; ?>"> <h4><?php echo __('Autoship Group IDs', 'autoship'); ?></h4> <div class="options_group"> <?php // Assigned Group Ids woocommerce_wp_text_input( array( 'id' => '_autoship_group_ids', 'label' => __('Assigned Group IDs', 'autoship'), 'description' => __('Assign one or more group ids. Enter multiple group ids in a comma separated list.', 'autoship'), 'placeholder' => __('(Optional)', 'autoship'), 'data_type' => 'text', 'desc_tip' => true ) );?> </div><!-- Assign Autoship Group Ids --> </div> </div> <div class="autoship-sync-active-option-group"> <div class="<?php echo $option_classes; ?>"> <?php // Show or hide Product Data Overrides based on checkbox value. $override = autoship_override_product_data_enabled( $_product->get_id() ); $show_prod_overrides = 'yes' !== $override ? 'style="display:none;"' : ''; ?> <h4><?php echo __('Product Data Overrides', 'autoship'); ?></h4> <div class="options_group"> <?php // Enable AUtoship Frequency Overrides woocommerce_wp_checkbox( array( 'id' => "_autoship_override_product_data", 'label' => __('Override Defaults', 'autoship'), 'class' => 'autoship_hide_show_toggler', 'description' => __('Select to override the default Product Data in QPilot.', 'autoship'), 'desc_tip' => false, 'value' => $override, 'custom_attributes' => array( 'data-target' => '.show_hide_product_data_group_simple' ), ) );?> </div><!-- Enable AUtoship Frequency Overrides --> <div class="product_data_options show_hide_product_data_group_simple" <?=$show_prod_overrides?>> <?php woocommerce_wp_text_input( array( 'id' => "_autoship_title_override", 'label' => __("Product Title", 'autoship'), 'description' => __('Enter a custom Product Title for QPilot', 'autoship'), 'placeholder' => autoship_get_product_display_name( $_product ), 'data_type' => 'text', 'type' => 'text', 'desc_tip' => true ) ); woocommerce_wp_select( array( 'id' => "_autoship_weightunit_override", 'label' => __("Weight unit", 'autoship'), 'description' => __('Select a Unit of Measurement for Weight', 'autoship'), 'options' => array( '' => __('--Select type--', 'autoship'), 'Kilogram' => 'kg', 'Gram' => 'g', 'Pound' => 'lbs', 'Ounce' => 'oz', ), 'data_type' => 'string', 'desc_tip' => true ) ); woocommerce_wp_select( array( 'id' => "_autoship_lengthunit_override", 'label' => __("Dimensions Unit", 'autoship'), 'description' => __('Select a Unit of Measurement for Length', 'autoship'), 'options' => array( '' => __('--Select type--', 'autoship'), 'Meter' => 'm', 'Centimeter' => 'cm', 'Milimeter' => 'mm', 'Inch' => 'in', 'Foot' => 'ft', 'Yard' => 'yd', ), 'data_type' => 'string', 'desc_tip' => true ) );?> </div><!-- .product_data_options --> </div> </div><!-- /.autoship-sync-active-option-group --> <?php do_action( 'autoship_before_print_product_custom_frequency_option_fields', $_product ); ?> <div class="autoship-sync-active-option-group"> <?php // Show or hide Frequency Overrides based on checkbox value. $override = autoship_override_frequency_options_enabled( $post->ID ); $show_freq_overrides = 'yes' !== $override ? 'style="display:none;"' : ''; ?> <h4><?php echo __('Frequency Options', 'autoship'); ?></h4> <div class="options_group"> <?php // Enable AUtoship Frequency Overrides woocommerce_wp_checkbox( array( 'id' => "_autoship_override_frequency_options", 'label' => __('Override Defaults', 'autoship'), 'class' => 'autoship_hide_show_toggler', 'description' => __('Select to override the default frequency options.', 'autoship'), 'desc_tip' => false, 'value' => $override, 'custom_attributes' => array( 'data-target' => '.show_hide_frequency_options_group_simple' ), ) );?> </div><!-- Enable AUtoship Frequency Overrides --> <div class="frequency_options show_hide_frequency_options_group_simple" <?=$show_freq_overrides?>> <?php $autoship_option_count = autoship_get_frequency_options_count(); for ($i = 0, $n = 1; $i < $autoship_option_count; $i++, $n++) { ?> <div class="options_group show_hide_frequency_options"> <h4><?php echo sprintf(__('Frequency Option %d', 'autoship'), $n);?></h4> <?php woocommerce_wp_select( array( 'id' => "_autoship_frequency_type_{$i}", 'label' => __("Frequency Type", 'autoship'), 'description' => __('Select a frequency type', 'autoship'), 'options' => array( '' => __('--Select frequency type--', 'autoship'), 'Days' => __('Days', 'autoship'), 'Weeks' => __('Weeks', 'autoship'), 'Months' => __('Months', 'autoship'), 'DayOfTheWeek' => __('Day of the week', 'autoship'), 'DayOfTheMonth' => __('Day of the month', 'autoship') ), 'data_type' => 'string', 'desc_tip' => true ) ); woocommerce_wp_text_input( array( 'id' => "_autoship_frequency_{$i}", 'label' => __("Frequency", 'autoship'), 'description' => __('Enter a frequency number', 'autoship'), 'placeholder' => __('Enter a frequency number', 'autoship'), 'data_type' => 'number', 'type' => 'number', 'desc_tip' => true ) ); woocommerce_wp_text_input( array( 'id' => "_autoship_frequency_display_name_{$i}", 'label' => __("Display Name", 'autoship'), 'description' => __('Enter a display name for this frequency option', 'autoship'), 'placeholder' => __('(Optional) Enter a display name', 'autoship'), 'data_type' => 'string', 'desc_tip' => true ) );?> </div><!-- Frequency Overide --> <?php } ?> </div><!-- .frequency_options --> </div><!-- /.autoship-sync-active-option-group --> <?php do_action( 'autoship_after_print_product_custom_frequency_option_fields', $_product ); ?> <div class="autoship-sync-active-option-group"> <h4><?php echo __('Next Occurrence Options', 'autoship'); ?></h4> <?php // Show or hide Relative Next Occurrence settings based on checkbox value. $relative_enabled = autoship_relative_next_occurrence_enabled( $post->ID ); $show_relative = 'yes' !== $relative_enabled ? 'style="display:none;"' : ''; ?> <div class="options_group"> <?php // Enable Relative Next Occurrence woocommerce_wp_checkbox( array( 'id' => "_autoship_relative_next_occurrence_enabled", 'label' => __('Override Defaults', 'autoship'), 'class' => 'autoship_hide_show_toggler', 'description' => __('Select to enable options for Next Occurrence.', 'autoship'), 'desc_tip' => false, 'value' => $relative_enabled, 'custom_attributes' => array( 'data-target' => '.show_hide_autoship_next_occurrence_options' ), ) ); ?> </div><!-- Enable Autoship Relative Next Occurrence --> <div class="options_group options-form-group autoship-next-occurrence show_hide_autoship_next_occurrence_options" <?=$show_relative?>> <h4><?php echo __('Set Next Occurrence Date Relative to Checkout', 'autoship'); ?></h4> <p><?php echo __('When this product is scheduled for Autoship, set the Next Occurrence date for this product’s Scheduled Order to a specific number of days after checkout.', 'autoship'); ?></p> <div class="option-form-row auto-flex-row"> <div class="option-form-group auto-flex-col"> <?php // Enable Autoship Relative Next Occurrence ?> <select id="_autoship_relative_next_occurrence_type" class="option-form-control" name="_autoship_relative_next_occurrence_type"> <?php // Get the options $options = autoship_valid_relative_next_occurrence_types(); ?> <?php foreach ($options as $key => $value): ?> <option value="<?php echo $key;?>" <?php selected( $key, $next_occurrence_type );?> ><?php echo $value;?></option> <?php endforeach; ?> </select> </div> <div class="option-form-group auto-flex-col"> <input type="number" class="option-form-control" id="_autoship_relative_next_occurrence" name="_autoship_relative_next_occurrence" placeholder="Enter a Value" value="<?php echo absint( $next_occurrence );?>"> </div> </div> </div><!-- Enable Autoship Relative Next Occurrence --> </div><!-- /.autoship-sync-active-option-group --> <?php do_action( 'autoship_after_print_product_custom_fields', $_product ); ?> </div><!-- All Autoship Custom Product Fields --> <?php } add_action( 'woocommerce_product_options_autoship_product_data', 'autoship_print_product_custom_fields' );