Noptin_Background_Mailer::prepare_campaign_data( $item )
Prepares campaign data.
Parameters Parameters
(array) (Required) item The item to prepare campaign data for.
Source Source
File: includes/class-noptin-background-mailer.php
public function prepare_campaign_data( $item ) { // A unique key for this campaign. $key = time() . wp_generate_password( 6, false ); // If this is a normal campaign, ensure it is published. if ( isset( $item['campaign_id'] ) ) { // Set the unique key to the campaign id. $key = $item['campaign_id']; // Fetch the post and ensure it is a published campaign. $post = get_post( $item['campaign_id'] ); if ( 'noptin-campaign' !== $post->post_type || 'publish' !== $post->post_status ) { return false; } } if ( empty( $item['key'] ) ) { $item['key'] = $key; } // Fetch the next recipient of this campaign. $next_recipient = false; // User can set recipients to be an array of subcriber ids or emails... if ( isset( $item['recipients'] ) ) { $next_recipient = array_shift( $item['recipients'] ); } // Or a WHERE query to be executed on the subscribers table. if ( empty( $next_recipient ) && isset( $item['subscribers_query'] ) ) { $next_recipient = $this->fetch_subscriber_from_query( $item ); } // If there is no other subscriber, abort. if ( empty( $next_recipient ) ) { if ( ! empty( $item['campaign_id'] ) ) { update_post_meta( $item['campaign_id'], 'completed', 1 ); } do_action( 'noptin_background_mailer_complete', $item ); return false; } $item['current_recipient'] = $next_recipient; // Recipient data. $item['next_recipient_data'] = array(); if ( isset( $item['campaign_data'] ) ) { $item['next_recipient_data'] = $item['campaign_data']; } // If this is a campaign, fetch the email body and subject. if ( isset( $item['campaign_id'] ) && empty( $item['next_recipient_data']['email_body'] ) ) { // Email body is the post content $item['next_recipient_data']['email_body'] = $post->post_content; // Email subject is the post title for newsletters and post_meta for campaign automations. if ( 'newsletter' === get_post_meta( $post->ID, 'campaign_type', true ) ) { $item['next_recipient_data']['email_subject'] = $post->post_title; } else { $item['next_recipient_data']['email_subject'] = get_post_meta( $post->ID, 'email_subject', true ); } // Finally, fetch the preview text. $item['next_recipient_data']['preview_text'] = get_post_meta( $post->ID, 'preview_text', true ); } // Maybe fetch a subscriber from an email... if ( is_email( $next_recipient ) ) { $item['next_recipient_data']['email'] = $next_recipient; } // Or a subscriber id. if ( is_scalar( $next_recipient ) ) { $subscriber = get_noptin_subscriber( $next_recipient ); } // Prepare the email merge tags. if ( empty( $item['next_recipient_data']['merge_tags'] ) ) { $item['next_recipient_data']['merge_tags'] = array(); } // Add the subscriber details as merge tags. if ( $subscriber->exists() ) { $item['next_recipient_data']['email'] = $subscriber->email; $item['next_recipient_data']['subscriber_id'] = $subscriber->id; $item['next_recipient_data']['merge_tags'] = array_merge( $item['next_recipient_data']['merge_tags'], get_noptin_subscriber_merge_fields( $subscriber ) ); } return $item; }
Expand full source code Collapse full source code View on GitHub