Created
May 14, 2018 21:50
-
-
Save cdharrison/b97070890395dc796c35f379afbf76b0 to your computer and use it in GitHub Desktop.
This adds the ability for FooEvents data to be automatically detected and mapped properly when importing a CSV of Events-as-Products for WooCommerce.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Register FooEvents columns in the importer. | |
* @link: https://github.com/woocommerce/woocommerce/wiki/Product-CSV-Importer-&-Exporter#adding-custom-import-columns-developers | |
* | |
* @param array $options | |
* @return array $options | |
*/ | |
function add_column_to_importer( $options ) { | |
// column slug => column name | |
$options['fooevents_custom_attendee_fields_options_serialized'] = 'fooevents_custom_attendee_fields_options_serialized'; | |
$options['FooEventsPDFTicketsEmailText'] = 'FooEventsPDFTicketsEmailText'; | |
$options['FooEventsTicketFooterText'] = 'FooEventsTicketFooterText'; | |
$options['WooCommerceEventsEvent'] = 'WooCommerceEventsEvent'; | |
$options['WooCommerceEventsDate'] = 'WooCommerceEventsDate'; | |
$options['WooCommerceEventsDateTimestamp'] = 'WooCommerceEventsDateTimestamp'; | |
$options['WooCommerceEventsHour'] = 'WooCommerceEventsHour'; | |
$options['WooCommerceEventsMinutes'] = 'WooCommerceEventsMinutes'; | |
$options['WooCommerceEventsPeriod'] = 'WooCommerceEventsPeriod'; | |
$options['WooCommerceEventsLocation'] = 'WooCommerceEventsLocation'; | |
$options['WooCommerceEventsTicketLogo'] = 'WooCommerceEventsTicketLogo'; | |
$options['WooCommerceEventsTicketHeaderImage'] = 'WooCommerceEventsTicketHeaderImage'; | |
$options['WooCommerceEventsTicketText'] = 'WooCommerceEventsTicketText'; | |
$options['WooCommerceEventsThankYouText'] = 'WooCommerceEventsThankYouText'; | |
$options['WooCommerceEventsSupportContact'] = 'WooCommerceEventsSupportContact'; | |
$options['WooCommerceEventsHourEnd'] = 'WooCommerceEventsHourEnd'; | |
$options['WooCommerceEventsMinutesEnd'] = 'WooCommerceEventsMinutesEnd'; | |
$options['WooCommerceEventsEndPeriod'] = 'WooCommerceEventsEndPeriod'; | |
$options['WooCommerceEventsGPS'] = 'WooCommerceEventsGPS'; | |
$options['WooCommerceEventsDirections'] = 'WooCommerceEventsDirections'; | |
$options['WooCommerceEventsEmail'] = 'WooCommerceEventsEmail'; | |
$options['WooCommerceEventsTicketBackgroundColor'] = 'WooCommerceEventsTicketBackgroundColor'; | |
$options['WooCommerceEventsTicketButtonColor'] = 'WooCommerceEventsTicketButtonColor'; | |
$options['WooCommerceEventsTicketTextColor'] = 'WooCommerceEventsTicketTextColor'; | |
$options['WooCommerceEventsBackgroundColor'] = 'WooCommerceEventsBackgroundColor'; | |
$options['WooCommerceEventsTextColor'] = 'WooCommerceEventsTextColor'; | |
$options['WooCommerceEventsGoogleMaps'] = 'WooCommerceEventsGoogleMaps'; | |
$options['WooCommerceEventsTicketPurchaserDetails'] = 'WooCommerceEventsTicketPurchaserDetails'; | |
$options['WooCommerceEventsTicketAddCalendar'] = 'WooCommerceEventsTicketAddCalendar'; | |
$options['WooCommerceEventsTicketDisplayDateTime'] = 'WooCommerceEventsTicketDisplayDateTime'; | |
$options['WooCommerceEventsTicketDisplayBarcode'] = 'WooCommerceEventsTicketDisplayBarcode'; | |
$options['WooCommerceEventsTicketDisplayPrice'] = 'WooCommerceEventsTicketDisplayPrice'; | |
$options['WooCommerceEventsCaptureAttendeeDetails'] = 'WooCommerceEventsCaptureAttendeeDetails'; | |
$options['WooCommerceEventsEmailAttendee'] = 'WooCommerceEventsEmailAttendee'; | |
$options['WooCommerceEventsCaptureAttendeeTelephone'] = 'WooCommerceEventsCaptureAttendeeTelephone'; | |
$options['WooCommerceEventsCaptureAttendeeCompany'] = 'WooCommerceEventsCaptureAttendeeCompany'; | |
$options['WooCommerceEventsCaptureAttendeeDesignation'] = 'WooCommerceEventsCaptureAttendeeDesignation'; | |
$options['WooCommerceEventsSendEmailTickets'] = 'WooCommerceEventsSendEmailTickets'; | |
$options['WooCommerceEventsEmailSubjectSingle'] = 'WooCommerceEventsEmailSubjectSingle'; | |
$options['WooCommerceEventsExportUnpaidTickets'] = 'WooCommerceEventsExportUnpaidTickets'; | |
$options['WooCommerceEventsExportBillingDetails'] = 'WooCommerceEventsExportBillingDetails'; | |
$options['WooCommerceEventsTicketTheme'] = 'WooCommerceEventsTicketTheme'; | |
$options['WooCommerceEventsAttendeeOverride'] = 'WooCommerceEventsAttendeeOverride'; | |
$options['WooCommerceEventsTicketOverride'] = 'WooCommerceEventsTicketOverride'; | |
$options['WooCommerceEventsEndDate'] = 'WooCommerceEventsEndDate'; | |
$options['WooCommerceEventsEndDateTimestamp'] = 'WooCommerceEventsEndDateTimestamp'; | |
$options['WooCommerceEventsMultiDayType'] = 'WooCommerceEventsMultiDayType'; | |
$options['WooCommerceEventsNumDays'] = 'WooCommerceEventsNumDays'; | |
$options['WooCommerceEventsDayOverride'] = 'WooCommerceEventsDayOverride'; | |
return $options; | |
} | |
add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_column_to_importer' ); | |
/** | |
* Add automatic mapping support for 'Custom Column'. | |
* This will automatically select the correct mapping for columns named 'Custom Column' or 'custom column'. | |
* | |
* @param array $columns | |
* @return array $columns | |
*/ | |
function add_column_to_mapping_screen( $columns ) { | |
$columns['fooevents_custom_attendee_fields_options_serialized'] = 'fooevents_custom_attendee_fields_options_serialized'; | |
$columns['FooEventsPDFTicketsEmailText'] = 'FooEventsPDFTicketsEmailText'; | |
$columns['FooEventsTicketFooterText'] = 'FooEventsTicketFooterText'; | |
$columns['WooCommerceEventsEvent'] = 'WooCommerceEventsEvent'; | |
$columns['WooCommerceEventsDate'] = 'WooCommerceEventsDate'; | |
$columns['WooCommerceEventsDateTimestamp'] = 'WooCommerceEventsDateTimestamp'; | |
$columns['WooCommerceEventsHour'] = 'WooCommerceEventsHour'; | |
$columns['WooCommerceEventsMinutes'] = 'WooCommerceEventsMinutes'; | |
$columns['WooCommerceEventsPeriod'] = 'WooCommerceEventsPeriod'; | |
$columns['WooCommerceEventsLocation'] = 'WooCommerceEventsLocation'; | |
$columns['WooCommerceEventsTicketLogo'] = 'WooCommerceEventsTicketLogo'; | |
$columns['WooCommerceEventsTicketHeaderImage'] = 'WooCommerceEventsTicketHeaderImage'; | |
$columns['WooCommerceEventsTicketText'] = 'WooCommerceEventsTicketText'; | |
$columns['WooCommerceEventsThankYouText'] = 'WooCommerceEventsThankYouText'; | |
$columns['WooCommerceEventsSupportContact'] = 'WooCommerceEventsSupportContact'; | |
$columns['WooCommerceEventsHourEnd'] = 'WooCommerceEventsHourEnd'; | |
$columns['WooCommerceEventsMinutesEnd'] = 'WooCommerceEventsMinutesEnd'; | |
$columns['WooCommerceEventsEndPeriod'] = 'WooCommerceEventsEndPeriod'; | |
$columns['WooCommerceEventsGPS'] = 'WooCommerceEventsGPS'; | |
$columns['WooCommerceEventsDirections'] = 'WooCommerceEventsDirections'; | |
$columns['WooCommerceEventsEmail'] = 'WooCommerceEventsEmail'; | |
$columns['WooCommerceEventsTicketBackgroundColor'] = 'WooCommerceEventsTicketBackgroundColor'; | |
$columns['WooCommerceEventsTicketButtonColor'] = 'WooCommerceEventsTicketButtonColor'; | |
$columns['WooCommerceEventsTicketTextColor'] = 'WooCommerceEventsTicketTextColor'; | |
$columns['WooCommerceEventsBackgroundColor'] = 'WooCommerceEventsBackgroundColor'; | |
$columns['WooCommerceEventsTextColor'] = 'WooCommerceEventsTextColor'; | |
$columns['WooCommerceEventsGoogleMaps'] = 'WooCommerceEventsGoogleMaps'; | |
$columns['WooCommerceEventsTicketPurchaserDetails'] = 'WooCommerceEventsTicketPurchaserDetails'; | |
$columns['WooCommerceEventsTicketAddCalendar'] = 'WooCommerceEventsTicketAddCalendar'; | |
$columns['WooCommerceEventsTicketDisplayDateTime'] = 'WooCommerceEventsTicketDisplayDateTime'; | |
$columns['WooCommerceEventsTicketDisplayBarcode'] = 'WooCommerceEventsTicketDisplayBarcode'; | |
$columns['WooCommerceEventsTicketDisplayPrice'] = 'WooCommerceEventsTicketDisplayPrice'; | |
$columns['WooCommerceEventsCaptureAttendeeDetails'] = 'WooCommerceEventsCaptureAttendeeDetails'; | |
$columns['WooCommerceEventsEmailAttendee'] = 'WooCommerceEventsEmailAttendee'; | |
$columns['WooCommerceEventsCaptureAttendeeTelephone'] = 'WooCommerceEventsCaptureAttendeeTelephone'; | |
$columns['WooCommerceEventsCaptureAttendeeCompany'] = 'WooCommerceEventsCaptureAttendeeCompany'; | |
$columns['WooCommerceEventsCaptureAttendeeDesignation'] = 'WooCommerceEventsCaptureAttendeeDesignation'; | |
$columns['WooCommerceEventsSendEmailTickets'] = 'WooCommerceEventsSendEmailTickets'; | |
$columns['WooCommerceEventsEmailSubjectSingle'] = 'WooCommerceEventsEmailSubjectSingle'; | |
$columns['WooCommerceEventsExportUnpaidTickets'] = 'WooCommerceEventsExportUnpaidTickets'; | |
$columns['WooCommerceEventsExportBillingDetails'] = 'WooCommerceEventsExportBillingDetails'; | |
$columns['WooCommerceEventsTicketTheme'] = 'WooCommerceEventsTicketTheme'; | |
$columns['WooCommerceEventsAttendeeOverride'] = 'WooCommerceEventsAttendeeOverride'; | |
$columns['WooCommerceEventsTicketOverride'] = 'WooCommerceEventsTicketOverride'; | |
$columns['WooCommerceEventsEndDate'] = 'WooCommerceEventsEndDate'; | |
$columns['WooCommerceEventsEndDateTimestamp'] = 'WooCommerceEventsEndDateTimestamp'; | |
$columns['WooCommerceEventsMultiDayType'] = 'WooCommerceEventsMultiDayType'; | |
$columns['WooCommerceEventsNumDays'] = 'WooCommerceEventsNumDays'; | |
$columns['WooCommerceEventsDayOverride'] = 'WooCommerceEventsDayOverride'; | |
return $columns; | |
} | |
add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'add_column_to_mapping_screen' ); | |
/** | |
* Process the data read from the CSV file. | |
* This just saves the value in meta data, but you can do anything you want here with the data. | |
* | |
* @param WC_Product $object - Product being imported or updated. | |
* @param array $data - CSV data read for the product. | |
* @return WC_Product $object | |
*/ | |
function process_import( $object, $data ) { | |
if ( ! empty( $data['fooevents_custom_attendee_fields_options_serialized'] ) ) | |
$object->update_meta_data( 'fooevents_custom_attendee_fields_options_serialized', $data['fooevents_custom_attendee_fields_options_serialized'] ); | |
if ( ! empty( $data['FooEventsPDFTicketsEmailText'] ) ) | |
$object->update_meta_data( 'FooEventsPDFTicketsEmailText', $data['FooEventsPDFTicketsEmailText'] ); | |
if ( ! empty( $data['FooEventsTicketFooterText'] ) ) | |
$object->update_meta_data( 'FooEventsTicketFooterText', $data['FooEventsTicketFooterText'] ); | |
if ( ! empty( $data['WooCommerceEventsEvent'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEvent', $data['WooCommerceEventsEvent'] ); | |
if ( ! empty( $data['WooCommerceEventsDate'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsDate', $data['WooCommerceEventsDate'] ); | |
if ( ! empty( $data['WooCommerceEventsDateTimestamp'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsDateTimestamp', $data['WooCommerceEventsDateTimestamp'] ); | |
if ( ! empty( $data['WooCommerceEventsHour'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsHour', $data['WooCommerceEventsHour'] ); | |
if ( ! empty( $data['WooCommerceEventsMinutes'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsMinutes', $data['WooCommerceEventsMinutes'] ); | |
if ( ! empty( $data['WooCommerceEventsPeriod'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsPeriod', $data['WooCommerceEventsPeriod'] ); | |
if ( ! empty( $data['WooCommerceEventsLocation'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsLocation', $data['WooCommerceEventsLocation'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketLogo'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketLogo', $data['WooCommerceEventsTicketLogo'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketHeaderImag'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketHeaderImage', $data['WooCommerceEventsTicketHeaderImage'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketText'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketText', $data['WooCommerceEventsTicketText'] ); | |
if ( ! empty( $data['WooCommerceEventsThankYouText'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsThankYouText', $data['WooCommerceEventsThankYouText'] ); | |
if ( ! empty( $data['WooCommerceEventsSupportContact'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsSupportContact', $data['WooCommerceEventsSupportContact'] ); | |
if ( ! empty( $data['WooCommerceEventsHourEnd'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsHourEnd', $data['WooCommerceEventsHourEnd'] ); | |
if ( ! empty( $data['WooCommerceEventsMinutesEnd'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsMinutesEnd', $data['WooCommerceEventsMinutesEnd'] ); | |
if ( ! empty( $data['WooCommerceEventsEndPeriod'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEndPeriod', $data['WooCommerceEventsEndPeriod'] ); | |
if ( ! empty( $data['WooCommerceEventsGPS'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsGPS', $data['WooCommerceEventsGPS'] ); | |
if ( ! empty( $data['WooCommerceEventsDirections'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsDirections', $data['WooCommerceEventsDirections'] ); | |
if ( ! empty( $data['WooCommerceEventsEmail'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEmail', $data['WooCommerceEventsEmail'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketBackgroundColor'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketBackgroundColor', $data['WooCommerceEventsTicketBackgroundColor'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketButtonColor'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketButtonColor', $data['WooCommerceEventsTicketButtonColor'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketTextColor'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketTextColor', $data['WooCommerceEventsTicketTextColor'] ); | |
if ( ! empty( $data['WooCommerceEventsBackgroundColor'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsBackgroundColor', $data['WooCommerceEventsBackgroundColor'] ); | |
if ( ! empty( $data['WooCommerceEventsTextColor'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTextColor', $data['WooCommerceEventsTextColor'] ); | |
if ( ! empty( $data['WooCommerceEventsGoogleMaps'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsGoogleMaps', $data['WooCommerceEventsGoogleMaps'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketPurchaserDetails'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketPurchaserDetails', $data['WooCommerceEventsTicketPurchaserDetails'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketAddCalendar'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketAddCalendar', $data['WooCommerceEventsTicketAddCalendar'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketDisplayDateTime'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketDisplayDateTime', $data['WooCommerceEventsTicketDisplayDateTime'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketDisplayBarcode'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketDisplayBarcode', $data['WooCommerceEventsTicketDisplayBarcode'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketDisplayPrice'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketDisplayPrice', $data['WooCommerceEventsTicketDisplayPrice'] ); | |
if ( ! empty( $data['WooCommerceEventsCaptureAttendeeDetails'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsCaptureAttendeeDetails', $data['WooCommerceEventsCaptureAttendeeDetails'] ); | |
if ( ! empty( $data['WooCommerceEventsEmailAttendee'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEmailAttendee', $data['WooCommerceEventsEmailAttendee'] ); | |
if ( ! empty( $data['WooCommerceEventsCaptureAttendeeTelephone'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsCaptureAttendeeTelephone', $data['WooCommerceEventsCaptureAttendeeTelephone'] ); | |
if ( ! empty( $data['WooCommerceEventsCaptureAttendeeCompany'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsCaptureAttendeeCompany', $data['WooCommerceEventsCaptureAttendeeCompany'] ); | |
if ( ! empty( $data['WooCommerceEventsCaptureAttendeeDesignation'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsCaptureAttendeeDesignation', $data['WooCommerceEventsCaptureAttendeeDesignation'] ); | |
if ( ! empty( $data['WooCommerceEventsSendEmailTickets'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsSendEmailTickets', $data['WooCommerceEventsSendEmailTickets'] ); | |
if ( ! empty( $data['WooCommerceEventsEmailSubjectSingle'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEmailSubjectSingle', $data['WooCommerceEventsEmailSubjectSingle'] ); | |
if ( ! empty( $data['WooCommerceEventsExportUnpaidTickets'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsExportUnpaidTickets', $data['WooCommerceEventsExportUnpaidTickets'] ); | |
if ( ! empty( $data['WooCommerceEventsExportBillingDetails'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsExportBillingDetails', $data['WooCommerceEventsExportBillingDetails'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketTheme'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketTheme', $data['WooCommerceEventsTicketTheme'] ); | |
if ( ! empty( $data['WooCommerceEventsAttendeeOverride'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsAttendeeOverride', $data['WooCommerceEventsAttendeeOverride'] ); | |
if ( ! empty( $data['WooCommerceEventsTicketOverride'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsTicketOverride', $data['WooCommerceEventsTicketOverride'] ); | |
if ( ! empty( $data['WooCommerceEventsEndDate'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEndDate', $data['WooCommerceEventsEndDate'] ); | |
if ( ! empty( $data['WooCommerceEventsEndDateTimestamp'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsEndDateTimestamp', $data['WooCommerceEventsEndDateTimestamp'] ); | |
if ( ! empty( $data['WooCommerceEventsMultiDayType'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsMultiDayType', $data['WooCommerceEventsMultiDayType'] ); | |
if ( ! empty( $data['WooCommerceEventsNumDays'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsNumDays', $data['WooCommerceEventsNumDays'] ); | |
if ( ! empty( $data['WooCommerceEventsDayOverride'] ) ) | |
$object->update_meta_data( 'WooCommerceEventsDayOverride', $data['WooCommerceEventsDayOverride'] ); | |
return $object; | |
} | |
add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import', 10, 2 ); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment