bp_core_render_email_template( string $template )

Find and render the template for Email posts (the Customizer and admin previews).

Description Description

Misuses the template_include filter which expects a string, but as we need to replace the {{{content}}} token with the post’s content, we use object buffering to load the template, replace the token, and render it.

The function returns an empty string to prevent WordPress rendering another template.

Top ↑

Parameters Parameters


(string) (Required) Path to template (probably single.php).

Top ↑

Return Return


Source Source

File: bp-core/bp-core-filters.php

function bp_core_render_email_template( $template ) {
	if ( get_post_type() !== bp_get_email_post_type() || ! is_single() ) {
		return $template;

	 * Filter template used to display Email posts.
	 * @since 2.5.0
	 * @param string $template Path to current template (probably single.php).
	$email_template = apply_filters( 'bp_core_render_email_template',
		bp_locate_template( bp_email_get_template( get_queried_object() ), false ),

	if ( ! $email_template ) {
		return $template;

	include( $email_template );
	$template = ob_get_contents();

	// Make sure we add a <title> tag so WP Customizer picks it up.
	$template = str_replace( '<head>', '<head><title>' . esc_html_x( 'BuddyPress Emails', 'screen heading', 'buddypress' ) . '</title>', $template );
	echo str_replace( '{{{content}}}', wpautop( get_post()->post_content ), $template );

	 * Link colours are applied directly in the email template before sending, so we
	 * need to add an extra style here to set the colour for the Customizer or preview.
	$settings = bp_email_get_appearance_settings();
		'<style>a { color: %s; }</style>',
		esc_attr( $settings['highlight_color'] )

	return '';

Top ↑

Changelog Changelog

Version Description
2.5.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.