<?php defined('ABSPATH') || exit; if (class_exists('WC_Settings_Emails', false)) { return new WC_Settings_Emails(); } class WC_Settings_Emails extends WC_Settings_Page { public function __construct() { $this->id = 'email'; $this->label = __('Emails', 'woocommerce'); add_action('woocommerce_admin_field_email_notification', array($this, 'email_notification_setting')); parent::__construct(); } protected function get_own_sections() { return array('' => __('Email options', 'woocommerce')); } protected function get_settings_for_default_section() { $desc_help_text = sprintf(__('To ensure your store&rsquo;s notifications arrive in your and your customers&rsquo; inboxes, we recommend connecting your email address to your domain and setting up a dedicated SMTP server. If something doesn&rsquo;t seem to be sending correctly, install the <a href="%1$s">WP Mail Logging Plugin</a> or check the <a href="%2$s">Email FAQ page</a>.', 'woocommerce'), 'https://wordpress.org/plugins/wp-mail-logging/', 'https://docs.woocommerce.com/document/email-faq'); $settings = array(array('title' => __('Email notifications', 'woocommerce'), 'desc' => sprintf(__('Email notifications sent from WooCommerce are listed below. Click on an email to configure it.<br>%s', 'woocommerce'), $desc_help_text), 'type' => 'title', 'id' => 'email_notification_settings'), array('type' => 'email_notification'), array('type' => 'sectionend', 'id' => 'email_notification_settings'), array('type' => 'sectionend', 'id' => 'email_recipient_options'), array('title' => __('Email sender options', 'woocommerce'), 'type' => 'title', 'desc' => '', 'id' => 'email_options'), array('title' => __('"From" name', 'woocommerce'), 'desc' => __('How the sender name appears in outgoing WooCommerce emails.', 'woocommerce'), 'id' => 'woocommerce_email_from_name', 'type' => 'text', 'css' => 'min-width:400px;', 'default' => esc_attr(get_bloginfo('name', 'display')), 'autoload' => false, 'desc_tip' => true), array('title' => __('"From" address', 'woocommerce'), 'desc' => __('How the sender email appears in outgoing WooCommerce emails.', 'woocommerce'), 'id' => 'woocommerce_email_from_address', 'type' => 'email', 'custom_attributes' => array('multiple' => 'multiple'), 'css' => 'min-width:400px;', 'default' => get_option('admin_email'), 'autoload' => false, 'desc_tip' => true), array('type' => 'sectionend', 'id' => 'email_options'), array('title' => __('Email template', 'woocommerce'), 'type' => 'title', 'desc' => sprintf(__('This section lets you customize the WooCommerce emails. <a href="%s" target="_blank">Click here to preview your email template</a>.', 'woocommerce'), wp_nonce_url(admin_url('?preview_woocommerce_mail=true'), 'preview-mail')), 'id' => 'email_template_options'), array('title' => __('Header image', 'woocommerce'), 'desc' => __('URL to an image you want to show in the email header. Upload images using the media uploader (Admin > Media).', 'woocommerce'), 'id' => 'woocommerce_email_header_image', 'type' => 'text', 'css' => 'min-width:400px;', 'placeholder' => __('N/A', 'woocommerce'), 'default' => '', 'autoload' => false, 'desc_tip' => true), array('title' => __('Footer text', 'woocommerce'), 'desc' => __('The text to appear in the footer of all WooCommerce emails.', 'woocommerce') . ' ' . sprintf(__('Available placeholders: %s', 'woocommerce'), '{site_title} {site_url}'), 'id' => 'woocommerce_email_footer_text', 'css' => 'width:400px; height: 75px;', 'placeholder' => __('N/A', 'woocommerce'), 'type' => 'textarea', 'default' => '{site_title} &mdash; Built with {WooCommerce}', 'autoload' => false, 'desc_tip' => true), array('title' => __('Base color', 'woocommerce'), 'desc' => sprintf(__('The base color for WooCommerce email templates. Default %s.', 'woocommerce'), '<code>#96588a</code>'), 'id' => 'woocommerce_email_base_color', 'type' => 'color', 'css' => 'width:6em;', 'default' => '#96588a', 'autoload' => false, 'desc_tip' => true), array('title' => __('Background color', 'woocommerce'), 'desc' => sprintf(__('The background color for WooCommerce email templates. Default %s.', 'woocommerce'), '<code>#f7f7f7</code>'), 'id' => 'woocommerce_email_background_color', 'type' => 'color', 'css' => 'width:6em;', 'default' => '#f7f7f7', 'autoload' => false, 'desc_tip' => true), array('title' => __('Body background color', 'woocommerce'), 'desc' => sprintf(__('The main body background color. Default %s.', 'woocommerce'), '<code>#ffffff</code>'), 'id' => 'woocommerce_email_body_background_color', 'type' => 'color', 'css' => 'width:6em;', 'default' => '#ffffff', 'autoload' => false, 'desc_tip' => true), array('title' => __('Body text color', 'woocommerce'), 'desc' => sprintf(__('The main body text color. Default %s.', 'woocommerce'), '<code>#3c3c3c</code>'), 'id' => 'woocommerce_email_text_color', 'type' => 'color', 'css' => 'width:6em;', 'default' => '#3c3c3c', 'autoload' => false, 'desc_tip' => true), array('type' => 'sectionend', 'id' => 'email_template_options'), array('title' => __('Store management insights', 'woocommerce'), 'type' => 'title', 'id' => 'email_merchant_notes'), array('title' => __('Enable email insights', 'woocommerce'), 'desc' => __('Receive email notifications with additional guidance to complete the basic store setup and helpful insights', 'woocommerce'), 'id' => 'woocommerce_merchant_email_notifications', 'type' => 'checkbox', 'checkboxgroup' => 'start', 'default' => 'no', 'autoload' => false), array('type' => 'sectionend', 'id' => 'email_merchant_notes')); return apply_filters('woocommerce_email_settings', $settings); } public function output() { global $current_section; $mailer = WC()->mailer(); $email_templates = $mailer->get_emails(); if ($current_section) { foreach ($email_templates as $email_key => $email) { if (strtolower($email_key) === $current_section) { $this->run_email_admin_options($email); break; } } } parent::output(); } protected function run_email_admin_options($email) { $email->admin_options(); } public function save() { global $current_section; if (!$current_section) { $this->save_settings_for_current_section(); $this->do_update_options_action(); } else { $wc_emails = WC_Emails::instance(); if (in_array($current_section, array_map('sanitize_title', array_keys($wc_emails->get_emails())), true)) { foreach ($wc_emails->get_emails() as $email_id => $email) { if (sanitize_title($email_id) === $current_section) { $this->do_update_options_action($email->id); } } } else { $this->save_settings_for_current_section(); $this->do_update_options_action(); } } } public function email_notification_setting() { $mailer = WC()->mailer(); $email_templates = $mailer->get_emails(); ?> <tr valign="top"> <td class="wc_emails_wrapper" colspan="2"> <table class="wc_emails widefat" cellspacing="0"> <thead> <tr> <?php $columns = apply_filters('woocommerce_email_setting_columns', array('status' => '', 'name' => __('Email', 'woocommerce'), 'email_type' => __('Content type', 'woocommerce'), 'recipient' => __('Recipient(s)', 'woocommerce'), 'actions' => '')); foreach ($columns as $key => $column) { echo '<th class="wc-email-settings-table-' . esc_attr($key) . '">' . esc_html($column) . '</th>'; } ?> </tr> </thead> <tbody> <?php foreach ($email_templates as $email_key => $email) { echo '<tr>'; foreach ($columns as $key => $column) { switch ($key) { case 'name': echo '<td class="wc-email-settings-table-' . esc_attr($key) . '"> <a href="' . esc_url(admin_url('admin.php?page=wc-settings&tab=email&section=' . strtolower($email_key))) . '">' . esc_html($email->get_title()) . '</a> ' . wc_help_tip($email->get_description()) . ' </td>'; break; case 'recipient': echo '<td class="wc-email-settings-table-' . esc_attr($key) . '"> ' . esc_html($email->is_customer_email() ? __('Customer', 'woocommerce') : $email->get_recipient()) . ' </td>'; break; case 'status': echo '<td class="wc-email-settings-table-' . esc_attr($key) . '">'; if ($email->is_manual()) { echo '<span class="status-manual tips" data-tip="' . esc_attr__('Manually sent', 'woocommerce') . '">' . esc_html__('Manual', 'woocommerce') . '</span>'; } elseif ($email->is_enabled()) { echo '<span class="status-enabled tips" data-tip="' . esc_attr__('Enabled', 'woocommerce') . '">' . esc_html__('Yes', 'woocommerce') . '</span>'; } else { echo '<span class="status-disabled tips" data-tip="' . esc_attr__('Disabled', 'woocommerce') . '">-</span>'; } echo '</td>'; break; case 'email_type': echo '<td class="wc-email-settings-table-' . esc_attr($key) . '"> ' . esc_html($email->get_content_type()) . ' </td>'; break; case 'actions': echo '<td class="wc-email-settings-table-' . esc_attr($key) . '"> <a class="button alignright" href="' . esc_url(admin_url('admin.php?page=wc-settings&tab=email&section=' . strtolower($email_key))) . '">' . esc_html__('Manage', 'woocommerce') . '</a> </td>'; break; default: do_action('woocommerce_email_setting_column_' . $key, $email); break; } } echo '</tr>'; } ?> </tbody> </table> </td> </tr> <?php } } return new WC_Settings_Emails();