cliff
11/6/2018 - 11:08 PM

Events Calendar PRO: Add {pro_addl_fields} variable to the tribe_event_inline shortcode.

Events Calendar PRO: Add {pro_addl_fields} variable to the tribe_event_inline shortcode.

<?php
/**
 * Events Calendar PRO: Add {pro_addl_fields} variable to the tribe_event_inline shortcode.
 *
 * @see  cliff_render_pro_addl_fields_within_inline_shortcode()
 *
 * @link https://gist.github.com/cliffordp/376e8c204ccd34ec78fbc38d519350ef This snippet.
 * @link https://theeventscalendar.com/knowledgebase/embedding-single-events-tribe_event_inline-shortcode/
 * @link https://theeventscalendar.com/knowledgebase/pro-additional-fields/
 */
function cliff_add_pro_addl_fields_to_inline_shortcode( $placeholders ) {
	if (
		method_exists( 'Tribe__Events__Pro__Single_Event_Meta', 'additional_fields' )
		&& function_exists( 'cliff_render_pro_addl_fields_within_inline_shortcode' )
	) {
		$placeholders['{pro_addl_fields}'] = 'cliff_render_pro_addl_fields_within_inline_shortcode';
	}

	return $placeholders;
}

/**
 * Render an event's PRO Additional Fields template for a given Event ID, as part of the custom {pro_addl_fields}
 * variable for the tribe_event_inline shortcode.
 *
 * @see cliff_add_pro_addl_fields_to_inline_shortcode() This function must go hand-in-hand.
 * @see Tribe__Events__Pro__Single_Event_Meta::additional_fields() The functionality we are mimicking.
 * @see Tribe__Events__Pro__Shortcodes__Inline__Parser::process() This only works because `call_user_func()` passes its `$id` parameter.
 *
 * @param int $event_id
 */
function cliff_render_pro_addl_fields_within_inline_shortcode( $event_id = 0 ) {
	tribe_get_template_part(
		'pro/modules/meta/additional-fields', null, [
			'fields' => tribe_get_custom_fields( $event_id ),
		]
	);
}

add_filter( 'tribe_events_pro_inline_placeholders', 'cliff_add_pro_addl_fields_to_inline_shortcode' );