Adding custom fields to the RSVP form code example
THIS ARTICLE IS FOR STACHETHEMES EVENT CALENDAR VERSION 3.x !
Here's example on how to insert custom fields to the RSVP form.
The code should be inserted in your theme or child-theme functions.php file.
/**
* This code adds two custom fields (text input and select element) on the front-end modal window
*/
add_action('wp_footer', function() {
?>
<script type="text/javascript">
(function ($) {
$(document).on('stecOnRsvpAfterFields', function (e, data) {
var customHtml = [
'<input type="text" name="attendee_country" placeholder="Country" />',
'<select name="attendee_tag"><option value="1">Tag</option></select>'
];
data.temp.customFields = customHtml;
});
})(window.jQuery);
</script>
<?php
});
/**
* This code intercepts the custom fields when the form is submitted
* \Stachethemes\Stec\Admin_Helper::post is same as $_POST[...] but returns default value (false) if !isset
*/
add_filter('stec_rsvp_to_event_before_add', function(\Stachethemes\Stec\Event_Meta_Attendee $attendee) {
$country = \Stachethemes\Stec\Admin_Helper::post('attendee_country', false);
$tag = \Stachethemes\Stec\Admin_Helper::post('attendee_tag', false);
if ($country && $tag) {
$attendee->set_custom_data('country', $country);
$attendee->set_custom_data('tag', $tag);
}
return $attendee;
});
/**
* This code will display the customs fields in the admin area
* When clicking on attendee edit button
*/
add_action('admin_footer', function() {
?>
<script type="text/javascript">
(function ($) {
$(document).on('stecOnAdminAddAttendee', function (e, data) {
var attendeeIndex = data.$attendee.index('.stachethemes-admin-attendance-list-attendee');
$.each(data.attendee.custom, function (key) {
var customHTML = [];
var inputKeyName = 'attendee[' + attendeeIndex + '][custom][' + key + ']';
customHTML.push('<p class="stachethemes-admin-info">' + key + '</p>');
customHTML.push('<input class="stachethemes-admin-input" type="text" name="' + inputKeyName + '" value="' + this + '" />');
$(customHTML.join('')).insertBefore(data.$attendee.find('.edit a[data-action="update-attendee"]'));
});
});
})(window.jQuery);
</script>
<?php
});

