Get "email_type" setting for new MailChimp subscribers added by this form.
public get_email_type ( ) : string | ||
리턴 | string |
/** * Process a subscribe form. * * @param MC4WP_Form $form */ public function process_subscribe_form(MC4WP_Form $form) { $api = $this->get_api(); $result = false; $email_type = $form->get_email_type(); $map = new MC4WP_Field_Map($form->data, $form->get_lists()); // loop through selected lists foreach ($map->list_fields as $list_id => $list_field_data) { // allow plugins to alter merge vars for each individual list $merge_vars = $list_field_data; /** * Filters merge vars which are sent to MailChimp, only fires for form requests. * * @param array $merge_vars * @param MC4WP_Form $form */ $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form); // send a subscribe request to MailChimp for each list $result = $api->subscribe($list_id, $form->data['EMAIL'], $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']); } if (!$result) { // add error code to form object $form->errors[] = $api->get_error_code() === 214 ? 'already_subscribed' : 'error'; return; } /** * Fires right after a form was used to subscribe. * * @since 3.0 * * @param MC4WP_Form $form Instance of the submitted form */ do_action('mc4wp_form_subscribed', $form); }
/** * Process a subscribe form. * * @param MC4WP_Form $form */ public function process_subscribe_form(MC4WP_Form $form) { $api = $this->get_api(); $result = false; $email = $form->data['EMAIL']; $email_type = $form->get_email_type(); $merge_vars = $form->data; /** * Filters merge vars which are sent to MailChimp, only fires for form requests. * * @param array $merge_vars * @param MC4WP_Form $form */ $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form); // create a map of all lists with list-specific merge vars $map = new MC4WP_Field_Map($merge_vars, $form->get_lists()); // loop through lists foreach ($map->list_fields as $list_id => $merge_vars) { // send a subscribe request to MailChimp for each list $result = $api->subscribe($list_id, $email, $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']); } // do stuff on failure if (!$result) { if ($api->get_error_code() == 212) { $form->errors[] = 'previously_unsubscribed'; $this->get_log()->warning(sprintf('Form %d > %s has unsubscribed before and cannot be resubscribed by the plugin.', $form->ID, $form->data['EMAIL'])); } elseif ($api->get_error_code() == 214) { // handle "already_subscribed" as a soft-error $form->errors[] = 'already_subscribed'; $this->get_log()->warning(sprintf("Form %d > %s is already subscribed to the selected list(s)", $form->ID, mc4wp_obfuscate_string($form->data['EMAIL']))); } else { // log error $this->get_log()->error(sprintf('Form %d > MailChimp API error: %s', $form->ID, $api->get_error_message())); // add error code to form object $form->errors[] = 'error'; } // bail return; } $this->get_log()->info(sprintf("Form %d > Successfully subscribed %s", $form->ID, $form->data['EMAIL'])); /** * Fires right after a form was used to subscribe. * * @since 3.0 * * @param MC4WP_Form $form Instance of the submitted form * @param string $email * @param array $merge_vars * @param array $pretty_data */ do_action('mc4wp_form_subscribed', $form, $email, $merge_vars, $map->pretty_data); }
/** * Process a subscribe form. * * @param MC4WP_Form $form */ public function process_subscribe_form(MC4WP_Form $form) { $api = $this->get_api(); $result = false; $email_type = $form->get_email_type(); $merge_vars = $form->data; /** * Filters merge vars which are sent to MailChimp, only fires for form requests. * * @param array $merge_vars * @param MC4WP_Form $form */ $merge_vars = (array) apply_filters('mc4wp_form_merge_vars', $merge_vars, $form); // create a map of all lists with list-specific merge vars $map = new MC4WP_Field_Map($merge_vars, $form->get_lists()); // loop through lists foreach ($map->list_fields as $list_id => $merge_vars) { // send a subscribe request to MailChimp for each list $result = $api->subscribe($list_id, $form->data['EMAIL'], $merge_vars, $email_type, $form->settings['double_optin'], $form->settings['update_existing'], $form->settings['replace_interests'], $form->settings['send_welcome']); } // do stuff on failure if (!$result) { if ($api->get_error_code() == 214) { // handle "already_subscribed" as a soft-error $form->errors[] = 'already_subscribed'; } else { // log other errors @error_log(sprintf('MailChimp for WordPress (form %d): %s', $form->ID, $api->get_error_message())); // add error code to form object $form->errors[] = 'error'; } return; } /** * Fires right after a form was used to subscribe. * * @since 3.0 * * @param MC4WP_Form $form Instance of the submitted form */ do_action('mc4wp_form_subscribed', $form, $map->formatted_data, $map->pretty_data); }
/** * Process a subscribe form. * * @param MC4WP_Form $form * @param MC4WP_Request $request */ public function process_subscribe_form(MC4WP_Form $form, MC4WP_Request $request) { $result = false; $mailchimp = new MC4WP_MailChimp(); $email_type = $form->get_email_type(); $data = $form->get_data(); $client_ip = $request->get_client_ip(); /** @var MC4WP_MailChimp_Subscriber $subscriber */ $subscriber = null; /** * @ignore * @deprecated 4.0 */ $data = apply_filters('mc4wp_merge_vars', $data); /** * @ignore * @deprecated 4.0 */ $data = (array) apply_filters('mc4wp_form_merge_vars', $data, $form); // create a map of all lists with list-specific data $mapper = new MC4WP_List_Data_Mapper($data, $form->get_lists()); /** @var MC4WP_MailChimp_Subscriber[] $map */ $map = $mapper->map(); // loop through lists foreach ($map as $list_id => $subscriber) { $subscriber->status = $form->settings['double_optin'] ? 'pending' : 'subscribed'; $subscriber->email_type = $email_type; $subscriber->ip_signup = $client_ip; /** * Filters subscriber data before it is sent to MailChimp. Fires for both form & integration requests. * * @param MC4WP_MailChimp_Subscriber $subscriber */ $subscriber = apply_filters('mc4wp_subscriber_data', $subscriber); /** * Filters subscriber data before it is sent to MailChimp. Only fires for form requests. * * @param MC4WP_MailChimp_Subscriber $subscriber */ $subscriber = apply_filters('mc4wp_form_subscriber_data', $subscriber); // send a subscribe request to MailChimp for each list $result = $mailchimp->list_subscribe($list_id, $subscriber->email_address, $subscriber->to_array(), $form->settings['update_existing'], $form->settings['replace_interests']); } $log = $this->get_log(); // do stuff on failure if (!is_object($result) || empty($result->id)) { $error_code = $mailchimp->get_error_code(); $error_message = $mailchimp->get_error_message(); if ($mailchimp->get_error_code() == 214) { $form->add_error('already_subscribed'); $log->warning(sprintf("Form %d > %s is already subscribed to the selected list(s)", $form->ID, $data['EMAIL'])); } else { $form->add_error('error'); $log->error(sprintf('Form %d > MailChimp API error: %s %s', $form->ID, $error_code, $error_message)); /** * Fire action hook so API errors can be hooked into. * * @param MC4WP_Form $form * @param string $error_message */ do_action('mc4wp_form_api_error', $form, $error_message); } // bail return; } // Success! Did we update or newly subscribe? if ($result->status === 'subscribed' && $result->was_already_on_list) { $form->add_message('updated'); } else { $form->add_message('subscribed'); } $log->info(sprintf("Form %d > Successfully subscribed %s", $form->ID, $data['EMAIL'])); /** * Fires right after a form was used to subscribe. * * @since 3.0 * * @param MC4WP_Form $form Instance of the submitted form * @param string $email * @param array $data * @param MC4WP_MailChimp_Subscriber[] $subscriber */ do_action('mc4wp_form_subscribed', $form, $subscriber->email_address, $data, $map); }