Scheduled Orders: Custom Field Next Occurrence Customization (Date Picker Example)
Adjusts next_occurrence_date based on a custom field value (date picker example).
Important: Always test customizations to your site on a staging environment before making changes to your live / production site. If you are not experienced with testing changes on a staging site, here is a good article to review.
/** * Alters the Next Occurrence Date for a Scheduled Order based on custom field. * @param array $scheduled_order_data The Scheduled Order Data to be sent to API. * @param int The current WC Order ID. * @return array The filtered Scheduled Order Data. */ function xx_adjust_next_scheduled_order_date( $scheduled_order_data, $order_id ){ // Make some call to check the custom Datepicker field & then convert to UTC // Date Time String. $value = get_post_meta( $order_id, 'xx_custom_date_picker_field' ); // Adjust the NextOccurrenceUtc to match the custom value. // Get the Date into the Date Time String the API expects $order_date = new WC_DateTime( $value ); $scheduled_order_data['NextOccurrenceUtc'] = $order_date->format('Y-m-d\TH:i:s'); return $scheduled_order_data; } add_filter( 'autoship_create_scheduled_order_data', 'xx_adjust_next_scheduled_order_date', 10, 2 );