/** * SHORTCODE 2: [sugar_event_location] * Assembles Venue Name, Street Address, City, and State (abbreviated to MA). */ add_shortcode('sugar_event_location', 'output_sugar_calendar_event_location'); function output_sugar_calendar_event_location($atts) { $atts = shortcode_atts(array('id' => get_the_ID()), $atts); $event_id = $atts['id']; $address_parts = array(); $venue_id = 0; // 1. Target the Venue post ID from Sugar Calendar's core object if (function_exists('sugar_calendar_get_event_by_object')) { $event = sugar_calendar_get_event_by_object($event_id, 'post'); if (!empty($event) && !empty($event->venue_id)) { $venue_id = $event->venue_id; } } if (empty($venue_id)) { $venue_id = get_post_meta($event_id, 'sc_venue', true); } // 2. Extract address components from the Venue Post metadata if (!empty($venue_id)) { $venue_name = get_the_title($venue_id); if (!empty($venue_name)) { $address_parts[] = $venue_name; } // Deep check for every possible street address meta key permutation $street = get_post_meta($venue_id, 'sugarcalendar_venue_address', true); if (empty($street)) { $street = get_post_meta($venue_id, '_sugarcalendar_venue_address', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'sugarcalendar_venue_street', true); } if (empty($street)) { $street = get_post_meta($venue_id, '_sugarcalendar_venue_street', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'sc_venue_address', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'venue_address', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'address', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'street', true); } if (empty($street)) { $street = get_post_meta($venue_id, 'street_address', true); } // Fetch City and State keys $city = get_post_meta($venue_id, 'sugarcalendar_venue_city', true); if (empty($city)) { $city = get_post_meta($venue_id, '_sugarcalendar_venue_city', true); } $state = get_post_meta($venue_id, 'sugarcalendar_venue_state', true); if (empty($state)) { $state = get_post_meta($venue_id, '_sugarcalendar_venue_state', true); } // Nested Array Check: Fallback if fields are packed as an indexed array if (empty($street) || empty($city) || empty($state)) { $bundled = get_post_meta($venue_id, 'sugar-calendar', true); if (is_array($bundled)) { if (empty($street)) { $street = !empty($bundled['sugarcalendar_venue_address']) ? $bundled['sugarcalendar_venue_address'] : ''; } if (empty($street)) { $street = !empty($bundled['sugarcalendar_venue_street']) ? $bundled['sugarcalendar_venue_street'] : ''; } if (empty($city)) { $city = !empty($bundled['sugarcalendar_venue_city']) ? $bundled['sugarcalendar_venue_city'] : ''; } if (empty($state)) { $state = !empty($bundled['sugarcalendar_venue_state']) ? $bundled['sugarcalendar_venue_state'] : ''; } } } // Standardize state abbreviations to MA if (!empty($state) && (strcasecmp(trim($state), 'Massachusetts') === 0 || strcasecmp(trim($state), 'mass') === 0)) { $state = 'MA'; } if (!empty($street)) { $address_parts[] = $street; } if (!empty($city)) { $address_parts[] = $city; } if (!empty($state)) { $address_parts[] = $state; } } else { // Fallback to manual text entries directly inside the event itself $direct_text = get_post_meta($event_id, 'sc_event_location', true); if (!empty($direct_text)) { $address_parts[] = $direct_text; } } // Filter array to drop empty spaces and join with commas $address_parts = array_filter(array_map('trim', $address_parts)); if (!empty($address_parts)) { return esc_html(implode(', ', $address_parts)); } return ''; }