From ed016d3076936e625b381188ab48079eebcba67c Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Thu, 25 Jul 2019 22:25:43 +0200 Subject: [PATCH] neuf-events: Add an organizer taxonomy to events --- .../neuf-events/neuf-events-taxonomies.php | 170 ++++++++++++++++-- 1 file changed, 159 insertions(+), 11 deletions(-) diff --git a/plugins/neuf-events/neuf-events-taxonomies.php b/plugins/neuf-events/neuf-events-taxonomies.php index bff9f78c..d8f6ff97 100644 --- a/plugins/neuf-events/neuf-events-taxonomies.php +++ b/plugins/neuf-events/neuf-events-taxonomies.php @@ -5,19 +5,30 @@ * We use the taxonomy to differ between different event types, such as concerts, movie screenings and parties. The taxonomy can also be applied to regular posts, so that you can assign terms to a news story. This way, we are able to showcase relevant events alongside our news articles. */ function neuf_events_register_taxonomies() +{ + neuf_events_register_event_type_taxonomy(); + neuf_events_register_organizer_taxonomy(); +} + +function neuf_events_register_event_type_taxonomy() { $labels = array( - 'name' => __('Event Types', 'neuf_event'), //Arrangementstype - 'singular_name' => __('Event Type', 'neuf_event'), - 'search_items' => __('Search Event Types', 'neuf_event'), //'Søk etter arrangementstype', - 'all_items' => __('All Event Types', 'neuf_event'), - 'parent_item' => __('Subtype of', 'neuf_event'), //'Undertype av', - 'parent_item_colon' => __('Subtype of:', 'neuf_event'), //'Undertype av:', - 'edit_item' => __('Edit Event Type', 'neuf_event'), - 'update_item' => __('Update Event Type', 'neuf_event'), - 'add_new_item' => __('Add New Event Type', 'neuf_event'), - 'new_item_name' => __('Name', 'neuf_event'), //'Navn på ny arrangementstype', - 'menu_name' => __('Event Types', 'neuf_event'), + 'name' => __('Event Types', 'neuf_event'), //Arrangementstype + 'singular_name' => __('Event Type', 'neuf_event'), + 'search_items' => __('Search Event Types', 'neuf_event'), //'Søk etter arrangementstype', + 'popular_items' => __('Popular Event Types', 'neuf_event'), + 'all_items' => __('All Event Types', 'neuf_event'), + 'parent_item' => __('Subtype of', 'neuf_event'), //'Undertype av', + 'parent_item_colon' => __('Subtype of:', 'neuf_event'), //'Undertype av:', + 'edit_item' => __('Edit Event Type', 'neuf_event'), + 'update_item' => __('Update Event Type', 'neuf_event'), + 'add_new_item' => __('Add New Event Type', 'neuf_event'), + 'new_item_name' => __('Name', 'neuf_event'), //'Navn på ny arrangementstype', + 'separate_items_with_commas' => __('Separate event types with commas', 'neuf_event'), + 'add_or_remove_items' => __('Add or remove event types', 'neuf_event'), + 'choose_from_most_used' => __('Choose from the most used event types', 'neuf_event'), + 'not_found' => __('No event types found.', 'neuf_event'), + 'menu_name' => __('Event Types', 'neuf_event'), ); register_taxonomy( @@ -40,6 +51,45 @@ function neuf_events_register_taxonomies() ); } +function neuf_events_register_organizer_taxonomy() +{ + $labels = array( + 'name' => __('Organizers', 'neuf_event'), // Arrangører + 'singular_name' => __('Organizer', 'neuf_event'), + 'search_items' => __('Search Organizers', 'neuf_event'), + 'popular_items' => __('Popular Organizers', 'neuf_event'), + 'all_items' => __('All Organizers', 'neuf_event'), + 'edit_item' => __('Edit Organizer', 'neuf_event'), + 'update_item' => __('Update Organizer', 'neuf_event'), + 'add_new_item' => __('Add New Organizer', 'neuf_event'), + 'new_item_name' => __('Name', 'neuf_event'), + 'separate_items_with_commas' => __('Separate organizers with commas', 'neuf_event'), + 'add_or_remove_items' => __('Add or remove organizers', 'neuf_event'), + 'choose_from_most_used' => __('Choose from the most used organizers', 'neuf_event'), + 'not_found' => __('No organizers found.', 'neuf_event'), + 'menu_name' => __('Organizers', 'neuf_event'), + ); + + register_taxonomy( + 'event_organizer', + array( + 'event', + ), + array( + 'hierarchical' => true, + 'labels' => $labels, + 'show_ui' => true, + 'show_in_rest' => true, + 'rest_base' => 'event_organizers', + 'query_var' => true, + 'rewrite' => array( + 'slug' => __('organizer', 'neuf_event'), + ), + ) + ); +} + + /** * Extend post_class() to include event type classes. * @@ -89,3 +139,101 @@ function neuf_events_set_default_object_terms($post_id, $post) } } add_action('save_post', 'neuf_events_set_default_object_terms', 100, 2); + +/* Add custom meta form fields when creating new organizers */ +function neuf_events_organizer_create_meta_field($taxonomy) +{ + $associations = neuf_associations_get_association_map(); + ?> +
+ + +
+term_id, '_neuf_events_organizer_association', true); + ?> + + + + +term_id, '_neuf_events_organizer_association', true); + $response->data['association_id'] = !empty($association_id) ? absint($association_id) : null; + + return $response; +}