autoship_print_variable_product_custom_fields (function)

(src/product-page.php) Outputs custom fields of a variable product. Takes $loop, $variation_data, and $variation as parameters. 

Function 

/**
* Outputs the HTML for the Autoship custom fields for Variations
*
* @see woocommerce_product_after_variable_attributes hook.
*
* @param int     $loop
* @param array   $variation_data
* @param WP_Post $variation
*/
function autoship_print_variable_product_custom_fields( $loop, $variation_data, $variation ) {


  // Retrieve all the metadata values for this variation.
  $variation_data = autoship_get_variable_product_custom_field_values( $variation->ID );
  $wc_product = wc_get_product( $variation->ID );

  $active = 'yes' == autoship_sync_active_enabled( $variation->ID );

  ?>

  <div class="autoship-sync-active-option-group <?php echo $active ? '' : 'not-active';?>">

    <!-- Autoship Checkout & Re-Occurring Price options -->
    <h4><?php echo __( 'Autoship Options', 'autoship' ); ?></h4>

    <?php

    $disable = apply_filters( 'autoship_disable_schedule_order_options_default', $variation_data['_autoship_dissable_schedule_order_options'], $variation->ID );
    $show_section = empty( $disable ) || ( 'yes' !== $disable ) ?
    '' : 'style="display:none;"';

    $option     = '_autoship_dissable_schedule_order_options';
    $id         = $option . $loop;
    $name       = "{$option}[{$loop}]";
    $val        = "yes";
    $checked    = checked('yes', $disable, false );
    $label      = __( 'Disable Autoship Options for this variation', 'autoship' );
    $data_attr  = "data-target=\".autoship_product_options_group_{$loop}\"";

    ?>

    <input class="autoship_hide_show_toggler" type="checkbox" id="<?=$id?>" name="<?=$name?>" value="<?=$val?>" <?=$checked?> <?=$data_attr?> /> <?=$label?> <br></br>

    <div class="autoship_product_options_group_<?php echo $loop; ?>_wrapper">

      <?php do_action( 'autoship_before_print_variable_product_custom_price_fields', $loop, $variation_data, $variation  ); ?>

      <div class="variable_pricing autoship_product_options_group_<?php echo $loop; ?>" <?=$show_section?>>

        <p class="form-row form-row-full">

          <label for="autoship_variable_checkout_price_<?php echo $loop; ?>"><?php echo sprintf(__('Autoship Checkout Price (%s)', 'autoship'), get_woocommerce_currency_symbol()); ?></label>
          <input type="text" size="5" id="autoship_variable_checkout_price_<?php echo $loop; ?>" name="_autoship_checkout_price[<?php echo $loop; ?>]" value="<?php echo esc_attr($variation_data['_autoship_checkout_price']); ?>" class="wc_input_price" placeholder="<?php _e('(optional)', 'autoship'); ?>" />

        </p>
        <p class="form-row form-row-full">

          <label for="autoship_variable_recurring_price_<?php echo $loop; ?>"><?php echo sprintf(__('Autoship Recurring Price (%s)', 'autoship'), get_woocommerce_currency_symbol()); ?></label>
          <input type="text" size="5" id="autoship_variable_recurring_price_<?php echo $loop; ?>" name="_autoship_recurring_price[<?php echo $loop; ?>]" value="<?php echo esc_attr($variation_data['_autoship_recurring_price']); ?>" class="wc_input_price" placeholder="<?php _e('(optional)', 'autoship'); ?>" />

        </p>
      </div>

      <?php do_action( 'autoship_after_print_variable_product_custom_price_fields', $loop, $variation_data, $variation  ); ?>

      <!-- Autoship Scheduled Order options -->
      <h4><?php echo __( 'Autoship Scheduled Order Settings', 'autoship' ); ?></h4>
      <p>
        <b><?php echo __( sprintf( 'These Settings can be updated in <a target="_blank" href="%s">Autoship Cloud > Products</a>', admin_url( '/admin.php?page=products' ) ), 'autoship'); ?></b>
      </p>

      <?php

      $option = '_autoship_schedule_process_enabled';
      $id     = $option . $loop;
      $name   = "{$option}[{$loop}]";
      $val    = "yes";
      $checked= checked('yes', $variation_data[$option], false );
      $label  = __( 'Enabled to Add to Scheduled Orders', 'autoship' );

      ?>

      <input type="checkbox" readonly="readonly" disabled="disabled" id="<?=$id?>" name="<?=$name?>" value="<?=$val?>" <?=$checked?> /> <?=$label?> <br></br>

      <?php

      $option = '_autoship_schedule_process_enabled';
      $id     = $option . $loop;
      $name   = "{$option}[{$loop}]";
      $val    = "yes";
      $checked= checked('yes', $variation_data[$option], false );
      $url    = "https://support.autoship.cloud/article/441-product-availability-and-stock-status";
      $label  = __( sprintf( 'Enabled to Process on Scheduled Orders (<a target="_blank" href="%s">Read this</a> before disabling this setting)', $url ), 'autoship' );

      ?>

      <input type="checkbox" readonly="readonly" disabled="disabled" id="<?=$id?>" name="<?=$name?>" value="<?=$val?>" <?=$checked?> /> <?=$label?> <br></br>

      <?php do_action( 'autoship_after_print_variable_product_custom_order_settings_fields', $loop, $variation_data, $variation  ); ?>

      <div class="autoship-group-ids autoship_product_options_group_<?php echo $loop; ?>" <?=$show_section?>>

        <h4><?php echo __('Assigned Group IDs', 'autoship'); ?></h4>

        <p class="form-row form-row-full">

          <label for="autoship_assigned_group_ids_<?php echo $loop; ?>"><?php echo __('Autoship Group IDs', 'autoship'); ?></label>
          <input type="text" id="autoship_assigned_group_ids_<?php echo $loop; ?>" name="_autoship_group_ids[<?php echo $loop; ?>]" value="<?php echo esc_attr($variation_data['_autoship_group_ids']); ?>" placeholder="<?php _e('(optional)', 'autoship'); ?>" />

        </p>

      </div>

      <div class="autoship-data-override autoship_product_options_group_<?php echo $loop; ?>" <?=$show_section?>>

        <?php

        // Show or hide Product Data Overrides based on checkbox value.
        $data_override = autoship_override_product_data_enabled( $variation->ID );
        $show_prod_overrides = 'yes' !== $data_override ? 'style="display:none;"' : '';

        ?>

        <h4><?php echo __('Product Data Overrides', 'autoship'); ?></h4>
        <p><?php echo __( 'Select to override the default Product Data in QPilot.', 'autoship' );?></p>

        <?php

        $override = apply_filters( 'autoship_override_variable_frequency_options_default', $variation_data['_autoship_override_frequency_options'], $variation->ID );
        $show_freq_overrides = empty( $override ) || ( 'yes' !== $override ) ?
        'style="display:none;"' : '';

        $option = '_autoship_override_product_data';
        $id     = $option . '_' . $loop;
        $name   = "{$option}[{$loop}]";
        $val    = "yes";
        $checked= checked('yes', $data_override, false );
        $label  = __( 'Override defaults', 'autoship' );
        $data_attr  = "data-target=\".show_hide_product_data_group_variable_{$loop}\"";

        ?>

        <p class="form-row form-row-full">
          <input class="autoship_hide_show_toggler" type="checkbox" id="<?=$id?>" name="<?=$name?>" value="<?=$val?>" <?=$checked?> <?=$data_attr?> />
          <label for="<?=$id?>"><?=$label?></label>
        </p>

        <div class="product_data_options show_hide_product_data_group_variable_<?php echo $loop; ?>" <?=$show_prod_overrides?>>

          <?php

          $option = '_autoship_title_override';
          $id     = $option . '_' . $loop;
          $name   = "{$option}[{$loop}]";
          $val    = $variation_data[$option];
          $label  = __( 'Product Title', 'autoship' );
          $placeholder  = esc_attr( autoship_get_product_display_name( $variation->ID ) );
          $help   = wc_help_tip( __('Enter a custom Product Title for QPilot', 'autoship') );
          ?>

          <p class="form-row form-row-full helptip-left">
            <label for="<?=$id?>"><?=$label?></label><?=$help?>
            <input class="autoship_hide_show_toggler" type="text" id="<?=$id?>" size="200" name="<?=$name?>" value="<?=$val?>" placeholder="<?=$placeholder?>" />
          </p>

          <?php

          $option = '_autoship_weightunit_override';
          $id     = $option . '_' . $loop;
          $name   = "{$option}[{$loop}]";
          $val    = $variation_data[$option];
          $label  = __( 'Weight unit', 'autoship' );
          $default_val = apply_filters( 'autoship_get_mapped_product_weight_unit', get_option('woocommerce_weight_unit'), $wc_product );
          $placeholder = __( sprintf( "-- Select an Override ( default %s ) --", $default_val ), 'autoship' );
          $help   = wc_help_tip( __('Select a Unit of Measurement for Weight', 'autoship') );
          $selects= array(
            'Kilogram'  => 'kg',
            'Gram'      => 'g',
            'Pound'     => 'lbs',
            'Ounce'     => 'oz',
          );
          ?>

          <p class="form-row form-row-full helptip-left">

            <label for="<?=$id?>">
              <?php echo $label; ?>
            </label>
            <?php echo $help;?>
            <select id="<?=$id?>" name="<?=$name?>" >

              <option value=""><?php echo $placeholder; ?></option>

              <?php foreach ( $selects as $key => $value ) { ?>

                <option value="<?php echo $key;?>" <?php echo selected( $key, $val ); ?>><?php echo $value; ?></option>

              <?php } ?>

            </select>

          </p>

          <?php

          $option = '_autoship_lengthunit_override';
          $id     = $option . '_' . $loop;
          $name   = "{$option}[{$loop}]";
          $val    = $variation_data[$option];
          $label  = __( 'Dimensions Unit', 'autoship' );
          $default_val = apply_filters( 'autoship_get_mapped_product_length_unit', get_option('woocommerce_dimension_unit'), $wc_product );
          $placeholder = __( sprintf( "-- Select an Override ( default %s ) --", $default_val ), 'autoship' );
          $help   = wc_help_tip( __('Select a Unit of Measurement for Length', 'autoship') );
          $selects= array(
            'Meter'       => 'm',
            'Centimeter'  => 'cm',
            'Milimeter'   => 'mm',
            'Inch'        => 'in',
            'Foot'        => 'ft',
            'Yard'        => 'yd',
          );
          ?>

          <p class="form-row form-row-full helptip-left">

            <label for="<?=$id?>">
              <?php echo $label; ?>
            </label>
            <?php echo $help;?>
            <select id="<?=$id?>" name="<?=$name?>" >

              <option value=""><?php echo $placeholder; ?></option>

              <?php foreach ( $selects as $key => $value ) { ?>

                <option value="<?php echo $key;?>" <?php echo selected( $key, $val ); ?>><?php echo $value; ?></option>

              <?php } ?>

            </select>

          </p>

        </div><!-- .product_data_options -->

        </div>

      </div><!-- /.autoship-sync-active-option-group -->

      <div class="autoship_product_options_group_<?php echo $loop; ?>" <?=$show_section?>>

        <!-- Autoship frequency options -->
        <h4><?php echo __('More Autoship Options', 'autoship'); ?></h4>

        <?php

        $override = apply_filters( 'autoship_override_variable_frequency_options_default', $variation_data['_autoship_override_frequency_options'], $variation->ID );
        $show_freq_overrides = empty( $override ) || ( 'yes' !== $override ) ?
        'style="display:none;"' : '';

        $option = '_autoship_override_frequency_options';
        $id     = $option . '_' . $loop;
        $name   = "{$option}[{$loop}]";
        $val    = "yes";
        $checked= checked('yes', $override, false );
        $label  = __( 'Override frequency options', 'autoship' );
        $data_attr  = "data-target=\".show_hide_frequency_options_group_{$loop}\"";

        ?>

        <p class="form-row form-row-full">
          <input class="autoship_hide_show_toggler" type="checkbox" id="<?=$id?>" name="<?=$name?>" value="<?=$val?>" <?=$checked?> <?=$data_attr?> />
          <label for="<?=$id?>"><?=$label?></label>
        </p>

        <!-- Autoship Custom frequency options Group -->
        <div class="frequency_options show_hide_frequency_options_group_<?php echo $loop; ?>" <?=$show_freq_overrides?>>

          <?php
          $autoship_frequency_options = autoship_get_frequency_options_count();
          for ( $i = 0, $n = 1; $i < $autoship_frequency_options; $i++, $n++ ) {

            $frequency_type = $variation_data["_autoship_frequency_type_{$i}"];
            $frequency      = $variation_data["_autoship_frequency_{$i}"];
            $display_name   = $variation_data["_autoship_frequency_display_name_{$i}"];

          ?>

          <div class="show_hide_frequency_option<?php echo $loop; ?>">
            <p class="form-row form-row-full">
              <strong><?php echo sprintf( __( 'Frequency Option %d', 'autoship' ), $n ); ?></strong>
            </p>
            <p class="form-row form-row-full">
              <label for="autoship_frequency_type_<?php echo $loop; ?>_<?php echo $i; ?>">
                <?php echo __( "Frequency Type", 'autoship' ); ?>
              </label>
              <select id="autoship_frequency_type_<?php echo $loop; ?>_<?php echo $i; ?>"
                  name="_autoship_frequency_type_<?php echo $i; ?>[<?php echo $loop; ?>]">
                <option value=""><?php echo __( '--Select a frequency type--', 'autoship' ); ?></option>
                <option value="Days" <?php echo selected('Days', $frequency_type ); ?>><?php echo __( 'Days', 'autoship' ); ?></option>
                <option value="Weeks" <?php echo selected('Weeks', $frequency_type ); ?>><?php echo __( 'Weeks', 'autoship' ); ?></option>
                <option value="Months" <?php echo selected('Months', $frequency_type ); ?>><?php echo __( 'Months', 'autoship' ); ?></option>
                <option value="DayOfTheWeek" <?php echo selected('DayOfTheWeek', $frequency_type ); ?>><?php echo __( 'Day of the week', 'autoship' ); ?></option>
                <option value="DayOfTheMonth" <?php echo selected('DayOfTheMonth', $frequency_type ); ?>><?php echo __( 'Day of the month', 'autoship' ); ?></option>
              </select>
            </p>
            <p class="form-row form-row-full">
              <label for="autoship_frequency_<?php echo $loop; ?>_<?php echo $i; ?>">
                <?php echo __( "Frequency", 'autoship' ); ?>
              </label>
              <input type="number"
               id="autoship_frequency_<?php echo $loop; ?>_<?php echo $i; ?>"
               name="_autoship_frequency_<?php echo $i; ?>[<?php echo $loop; ?>]"
               value="<?php echo esc_attr( $frequency ); ?>"
               placeholder="<?php _e( 'Enter a frequency number', 'autoship' ); ?>" />
            </p>
            <p class="form-row form-row-full">
              <label for="autoship_frequency_display_name_<?php echo $loop; ?>_<?php echo $i; ?>">
                <?php echo __( "Frequency Display Name", 'autoship' ); ?>
              </label>
              <input type="text"
               id="autoship_frequency_display_name_<?php echo $loop; ?>_<?php echo $i; ?>"
               name="_autoship_frequency_display_name_<?php echo $i; ?>[<?php echo $loop; ?>]"
               value="<?php echo esc_attr( $display_name ); ?>"
               placeholder="<?php _e( '(Optional) Enter a display name', 'autoship' ); ?>" />
            </p>
            <p>
              <hr />
            </p>
          </div>

          <?php } ?>

        </div>

      </div>

      <?php do_action( 'autoship_after_print_variable_product_custom_fields_group', $loop, $variation_data, $variation ); ?>

    </div>

  </div>

  <?php do_action( 'autoship_after_print_variable_product_custom_fields', $loop, $variation_data, $variation ); ?>

  <?php


}