BP_Email::set_post_object( WP_Post $post )

Set the Post object containing the email content template.


Description Description

Also sets the email’s subject, content, and template from the Post, for convenience.


Top ↑

Parameters Parameters

$post

(WP_Post) (Required)


Top ↑

Return Return

(BP_Email)


Source Source

File: bp-core/classes/class-bp-email.php

	public function set_post_object( WP_Post $post ) {

		/**
		 * Filters the new value of the email's "post object" property.
		 *
		 * @since 2.5.0
		 *
		 * @param WP_Post $post A Post.
		 * @param BP_Email $this Current instance of the email type class.
		 */
		$this->post_object = apply_filters( 'bp_email_set_post_object', $post, $this );

		if ( is_a( $this->post_object, 'WP_Post' ) ) {
			$this->set_subject( $this->post_object->post_title )
				->set_content_html( $this->post_object->post_content )
				->set_content_plaintext( $this->post_object->post_excerpt );

			ob_start();

			// Load the template.
			add_filter( 'bp_locate_template_and_load', '__return_true' );

			// Set up the `$post` global.
			global $post;
			$reset_post = $post;
			$post       = $this->post_object;

			bp_locate_template( bp_email_get_template( $this->post_object ), true, false );

			// Reset the `$post` global.
			$post = $reset_post;

			remove_filter( 'bp_locate_template_and_load', '__return_true' );

			$this->set_template( ob_get_contents() );

			ob_end_clean();
		}

		return $this;
	}


Top ↑

Changelog 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.