Extending FES Like the Booking Form?
WordPress Event Management, Calendars & Registration › Forums › Frontend Submissions › Extending FES Like the Booking Form?
This topic contains 4 replies, has 3 voices, and was last updated by Sadik Bhimani 7 years, 5 months ago.
-
AuthorPosts
-
October 5, 2016 at 11:04 pm #24540
I’ve been doing a lot of looking through the site docs and through the codebase and am having a problems trying to figure out how to add custom field types to the form customizer (and then customizing the output on the front-end).
As the most basic example, we have a custom taxonomy registered to events. We would like people to be able to add a dropdown for the custom taxonomy to their submission forms just like with categories and tags.
I found the
custom-taxonomies.php
file which seems to hook intoeventorganiser_event_form_element_types
and looks like it should already be adding any object taxonomies registered to the event CPT (which I have registered both through theeventorganiser_event_properties
hook and throughregister_taxonomy
‘s second parameter. Tried adjusting the priority on the hook with no luck. Maybe this just isn’t linked up yet?I understand that there already seems to be a well documented API for adding custom fields to the booking form via hooks and element factories. Does this functionality exist for FES in some sort of undocumented state? I’m sure it is something you are working towards but wondering what is available as of now.
P.S. for now, we have been able to use the ability to specify a hook name to render custom fields, but it’s not the most user friendly option! However, it works – so good looks.
Brian HannaOctober 7, 2016 at 11:17 pm #24604Hi Brian,
That is what the file is intending to do, however there appears to be a bug (the registering of the form element happens before the taxonomies). I shall look into this and get back to you.
Stephen HarrisOctober 15, 2016 at 9:48 pm #24708Hi Brian,
Apologies for the delay in getting back to you. Here is a snippet that will register a form field for a custom taxonomy (it will allow users to select on or more terms from the taxonomy, but not create new terms). For the purposes of the example, I’m using a custom taxonomy
event-type
:add_action( 'eventorganiser_event_form_element_types', 'eventorganiser_fes_add_my_custom_tax' ); function eventorganiser_fes_add_my_custom_tax( $element_types ){ //The key should be event_ct_{taxonomy} $element_types['event']['event_ct_event-type'] = 'EO_Event_Form_Element_Event_Type_Taxonomy'; return $element_types; } /** * The Form element class */ class EO_Event_Form_Element_Event_Type_Taxonomy extends EO_Event_Form_Element_Custom_Taxonomy{ //The type property should match the key above //i.e. it should be of the form event_ct_{taxonomy} public $type = 'event_ct_event-type'; //The name as it appears in the form customiser static function get_type_name(){ return 'Event type'; } } //You can create your own view class, but there is a default //template you can use. class EO_Event_Form_Element_Event_Type_Taxonomy_View extends EO_Event_Form_Element_View{ public $template = 'elements/eo-event-form-custom-taxonomy.php'; }
Stephen HarrisJuly 22, 2017 at 4:37 pm #27929HI Stephen, I want to do the same thing. But I am unable to get the above to work. What i have done is in my child theme’s functions.php, I have added the code you have provided, changing the key to match my custom taxonomy name (job_listing_region).
Also in my register_taxonomy call, I have added the event post type. This makes the taxonomy appear when creating events in admin backend. However the custom taxonomy field does not appear in the Event Submission Form options for FES in admin.
Here is what I have done,
In my child theme’s functions.php,
require_once( __DIR__ . '/includes/fes_city.php');
Then in fes_city.php
<?php add_filter('eventorganiser_event_properties', 'hk_event_fes_city', 10, 1); function hk_event_fes_city($args) { $args['taxonomies'][] = 'job_listing_region'; return $args; } add_action('eventorganiser_event_form_element_types', 'eventorganiser_fes_add_city'); function eventorganiser_fes_add_city($element_types) { //The key should be event_ct_{taxonomy} $element_types['event']['event_ct_job_listing_region'] = 'EO_Event_Form_Element_Event_Type_Taxonomy'; return $element_types; } /** * The Form element class */ class EO_Event_Form_Element_Event_Type_Taxonomy extends EO_Event_Form_Element_Custom_Taxonomy { //The type property should match the key above //i.e. it should be of the form event_ct_{taxonomy} public $type = 'event_ct_job_listing_region'; //The name as it appears in the form customiser static function get_type_name() { return 'City'; } } //You can create your own view class, but there is a default //template you can use. class EO_Event_Form_Element_Event_Type_Taxonomy_View extends EO_Event_Form_Element_View { public $template = 'elements/eo-event-form-custom-taxonomy.php'; }
What am I missing?
Thanks for your help.
Sadik BhimaniJuly 23, 2017 at 1:02 pm #27931OK I was able to solve this. Here’s my final code if anyone wants to do the same thing. Note that this needs to be a plugin and cannot go in your theme’s functions.php, because the filter needs to be added (inside a plugin) before the apply_filters is run, as per wordpress hierarchy of execution.
add_filter('eventorganiser_event_form_element_types', 'eventorganiser_fes_add_city'); function eventorganiser_fes_add_city($element_types) { //The key should be event_ct_{taxonomy} $element_types['event']['event_ct_job_listing_region'] = 'EO_Event_Form_Element_Event_Type_Taxonomy'; return $element_types; } /** * The Form element class */ class EO_Event_Form_Element_Event_Type_Taxonomy extends EO_Event_Form_Element_Custom_Taxonomy { //The type property should match the key above //i.e. it should be of the form event_ct_{taxonomy} public $type = 'event_ct_job_listing_region'; //The name as it appears in the form customiser static function get_type_name() { return 'Event City'; } } //You can create your own view class, but there is a default //template you can use. class EO_Event_Form_Element_Event_Type_Taxonomy_View extends EO_Event_Form_Element_View { public $template = 'eo-event-form-custom-taxonomy.php'; }
Sadik Bhimani -
AuthorPosts