Stachethemes Event Calendar 5 Custom RSVP Input Fields hook example:
This example inserts two new inputs: Phone Number and Company Name.
The example assumes the code will be placed in the theme or the child-theme functions.php file.
/** * STEP 1: * Modify the Attendance Form Structure on the Front-end * via stecFilterAttendFormContent JavaScript filter */ add_action('wp_footer', function () { ?> <script> window.stecFilterAttendFormContent = function({ structure, attendanceData, isLoggedIn }) { const newStructure = JSON.parse(JSON.stringify(structure)); // Insert Phone Number input field newStructure.push({ id: 'phone-number', title: 'Phone number', type: 'input-text', metaKey: 'phone_number', value: attendanceData?.current_user?.phone_number || '', required: true, regexByType: 'phone', errorMessage: 'Invalid phone number' }); // Insert Company Name input field newStructure.push({ id: 'company-name', title: 'Company name', type: 'input-text', metaKey: 'company_name', value: attendanceData?.current_user?.company_name || '', required: true, regexByType: 'title', errorMessage: 'Invalid company name' }); return newStructure; } </script> <?php });
/** * STEP 2: * Register the new custom input fields as a post meta * so that it can be saved in the database when the user submits the RSVP form */ add_action('init', function () { register_post_meta( 'stec_attend', 'phone_number', array( 'type' => 'string', 'single' => true, 'show_in_rest' => true ) ); register_post_meta( 'stec_attend', 'company_name', array( 'type' => 'string', 'single' => true, 'show_in_rest' => true ) ); });
/** * STEP 3: * Include the new custom input fields from the database when * the attendance data for the event is being retrieved on the front-end */ add_filter('stec_attendance_data_meta_fields', function ($fields) { $fields[] = 'phone_number'; $fields[] = 'company_name'; return $fields; });
/** * STEP 4: * Modify the Attendance Form Structure on the Admin via stecFilterAttendFormContentAdmin JavaScript filter * to include the new custom checkbox field * * This is similar as STEP 1 but for the Admin panel */ add_action('admin_footer', 'stec_attendance_custom_form_admin'); add_action('wp_footer', 'stec_attendance_custom_form_admin'); function stec_attendance_custom_form_admin() { ?> <script> window.stecFilterAttendFormContentAdmin = function({ structure, postData }) { const newStructure = JSON.parse(JSON.stringify(structure)); newStructure.push({ id: 'phone-number', title: 'Phone number', type: 'input-text', metaKey: 'phone_number', value: postData.current?.meta?.phone_number || '', regexByType: 'phone', required: true, errorMessage: 'Invalid phone number' }); newStructure.push({ id: 'company-name', title: 'Company Name', type: 'input-text', metaKey: 'company_name', value: postData.current?.meta?.company_name || '', regexByType: 'title', required: true, errorMessage: 'Invalid company name' }); return newStructure; } </script> <?php }