/** * Get an BP_Email object for the specified email type. * * This function pre-populates the object with the subject, content, and template from the appropriate * email post type item. It does not replace placeholder tokens in the content with real values. * * @since 2.5.0 * * @param string $email_type Unique identifier for a particular type of email. * @return BP_Email|WP_Error BP_Email object, or WP_Error if there was a problem. */ function bp_get_email($email_type) { $switched = false; // Switch to the root blog, where the email posts live. if (!bp_is_root_blog()) { switch_to_blog(bp_get_root_blog_id()); $switched = true; } $args = array('no_found_rows' => true, 'numberposts' => 1, 'post_status' => 'publish', 'post_type' => bp_get_email_post_type(), 'suppress_filters' => false, 'tax_query' => array(array('field' => 'slug', 'taxonomy' => bp_get_email_tax_type(), 'terms' => $email_type))); /** * Filters arguments used to find an email post type object. * * @since 2.5.0 * * @param array $args Arguments for get_posts() used to fetch a post object. * @param string $email_type Unique identifier for a particular type of email. */ $args = apply_filters('bp_get_email_args', $args, $email_type); $post = get_posts($args); if (!$post) { if ($switched) { restore_current_blog(); } return new WP_Error('missing_email', __FUNCTION__, array($email_type, $args)); } /** * Filters arguments used to create the BP_Email object. * * @since 2.5.0 * * @param WP_Post $post Post object containing the contents of the email. * @param string $email_type Unique identifier for a particular type of email. * @param array $args Arguments used with get_posts() to fetch a post object. * @param WP_Post $post All posts retrieved by get_posts( $args ). May only contain $post. */ $post = apply_filters('bp_get_email_post', $post[0], $email_type, $args, $post); $email = new BP_Email($email_type); /* * Set some email properties for convenience. */ // Post object (sets subject, content, template). $email->set_post_object($post); /** * Filters the BP_Email object returned by bp_get_email(). * * @since 2.5.0 * * @param BP_Email $email An object representing a single email, ready for mailing. * @param string $email_type Unique identifier for a particular type of email. * @param array $args Arguments used with get_posts() to fetch a post object. * @param WP_Post $post All posts retrieved by get_posts( $args ). May only contain $post. */ $retval = apply_filters('bp_get_email', $email, $email_type, $args, $post); if ($switched) { restore_current_blog(); } return $retval; }