2013-07-26 14:36:28 +00:00
< ? php
/**
* WooCommerce Email Settings
*
2020-08-05 16:36:24 +00:00
* @ package WooCommerce\Admin
2018-04-12 15:59:42 +00:00
* @ version 2.1 . 0
2013-07-26 14:36:28 +00:00
*/
2018-04-12 15:59:42 +00:00
defined ( 'ABSPATH' ) || exit ;
if ( class_exists ( 'WC_Settings_Emails' , false ) ) {
return new WC_Settings_Emails ();
2014-09-20 19:55:47 +00:00
}
2013-07-26 14:36:28 +00:00
2018-04-12 15:59:42 +00:00
/**
* WC_Settings_Emails .
*/
class WC_Settings_Emails extends WC_Settings_Page {
2013-07-26 14:36:28 +00:00
/**
2018-04-12 15:59:42 +00:00
* Constructor .
2013-07-26 14:36:28 +00:00
*/
2018-04-12 15:59:42 +00:00
public function __construct () {
$this -> id = 'email' ;
$this -> label = __ ( 'Emails' , 'woocommerce' );
2018-03-05 18:59:17 +00:00
2018-04-12 15:59:42 +00:00
add_action ( 'woocommerce_admin_field_email_notification' , array ( $this , 'email_notification_setting' ) );
parent :: __construct ();
}
2018-03-05 18:59:17 +00:00
2018-04-12 15:59:42 +00:00
/**
* Get sections .
*
* @ return array
*/
public function get_sections () {
$sections = array (
'' => __ ( 'Email options' , 'woocommerce' ),
);
return apply_filters ( 'woocommerce_get_sections_' . $this -> id , $sections );
}
2018-03-05 18:59:17 +00:00
2018-04-12 15:59:42 +00:00
/**
* Get settings array .
*
* @ return array
*/
public function get_settings () {
2021-04-06 10:03:06 +00:00
$desc_help_text = sprintf (
/* translators: %1$s: Link to WP Mail Logging plugin, %2$s: Link to Email FAQ support page. */
2021-04-20 06:38:00 +00:00
__ ( 'To ensure your store’s notifications arrive in your and your customers’ inboxes, we recommend connecting your email address to your domain and setting up a dedicated SMTP server. If something doesn’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' ),
2021-04-06 10:03:06 +00:00
'https://wordpress.org/plugins/wp-mail-logging/' ,
'https://docs.woocommerce.com/document/email-faq'
);
2018-04-12 15:59:42 +00:00
$settings = apply_filters (
2019-03-04 14:53:19 +00:00
'woocommerce_email_settings' ,
array (
2018-04-12 15:59:42 +00:00
array (
'title' => __ ( 'Email notifications' , 'woocommerce' ),
2021-04-06 10:03:06 +00:00
/* translators: %s: help description with link to WP Mail logging and support page. */
'desc' => sprintf ( __ ( 'Email notifications sent from WooCommerce are listed below. Click on an email to configure it.<br>%s' , 'woocommerce' ), $desc_help_text ),
2018-04-12 15:59:42 +00:00
'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' ,
2019-03-04 14:53:19 +00:00
'css' => 'min-width:400px;' ,
2018-04-12 15:59:42 +00:00
'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' ,
2018-03-05 18:59:17 +00:00
),
2019-03-04 14:53:19 +00:00
'css' => 'min-width:400px;' ,
2018-04-12 15:59:42 +00:00
'default' => get_option ( 'admin_email' ),
'autoload' => false ,
'desc_tip' => true ,
),
array (
'type' => 'sectionend' ,
'id' => 'email_options' ,
),
array (
'title' => __ ( 'Email template' , 'woocommerce' ),
'type' => 'title' ,
2018-08-23 07:04:24 +00:00
/* translators: %s: Nonced email preview link */
2018-04-12 15:59:42 +00:00
'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' ,
2019-03-04 14:53:19 +00:00
'css' => 'min-width:400px;' ,
2018-04-12 15:59:42 +00:00
'placeholder' => __ ( 'N/A' , 'woocommerce' ),
'default' => '' ,
'autoload' => false ,
'desc_tip' => true ,
),
array (
'title' => __ ( 'Footer text' , 'woocommerce' ),
2018-08-23 07:04:24 +00:00
/* translators: %s: Available placeholders for use */
2020-02-11 09:46:32 +00:00
'desc' => __ ( 'The text to appear in the footer of all WooCommerce emails.' , 'woocommerce' ) . ' ' . sprintf ( __ ( 'Available placeholders: %s' , 'woocommerce' ), '{site_title} {site_url}' ),
2018-04-12 15:59:42 +00:00
'id' => 'woocommerce_email_footer_text' ,
2019-03-04 14:53:19 +00:00
'css' => 'width:400px; height: 75px;' ,
2018-04-12 15:59:42 +00:00
'placeholder' => __ ( 'N/A' , 'woocommerce' ),
'type' => 'textarea' ,
2019-03-04 14:53:19 +00:00
'default' => '{site_title} — Built with {WooCommerce}' ,
2018-04-12 15:59:42 +00:00
'autoload' => false ,
'desc_tip' => true ,
),
array (
'title' => __ ( 'Base color' , 'woocommerce' ),
/* translators: %s: default color */
'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' ),
/* translators: %s: default color */
'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' ),
/* translators: %s: default color */
'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' ),
/* translators: %s: default color */
'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' ,
),
2020-12-29 17:31:46 +00:00
array (
'title' => __ ( 'Store management insights' , 'woocommerce' ),
'type' => 'title' ,
'id' => 'email_merchant_notes' ,
),
array (
'title' => __ ( 'Enable email insights' , 'woocommerce' ),
2020-12-30 15:13:39 +00:00
'desc' => __ ( 'Receive email notifications with additional guidance to complete the basic store setup and helpful insights' , 'woocommerce' ),
2020-12-29 17:31:46 +00:00
'id' => 'woocommerce_merchant_email_notifications' ,
'type' => 'checkbox' ,
'checkboxgroup' => 'start' ,
2021-02-11 17:15:17 +00:00
'default' => 'no' ,
2020-12-29 17:31:46 +00:00
'autoload' => false ,
),
2021-03-23 16:25:20 +00:00
2021-03-20 17:51:27 +00:00
array (
'type' => 'sectionend' ,
'id' => 'email_merchant_notes' ,
),
2018-04-12 15:59:42 +00:00
)
);
return apply_filters ( 'woocommerce_get_settings_' . $this -> id , $settings );
}
2018-03-05 18:59:17 +00:00
2018-04-12 15:59:42 +00:00
/**
* Output the settings .
*/
public function output () {
global $current_section ;
// Define emails that can be customised here.
$mailer = WC () -> mailer ();
$email_templates = $mailer -> get_emails ();
if ( $current_section ) {
foreach ( $email_templates as $email_key => $email ) {
if ( strtolower ( $email_key ) === $current_section ) {
$email -> admin_options ();
break ;
2013-07-26 14:36:28 +00:00
}
}
2018-04-12 15:59:42 +00:00
} else {
$settings = $this -> get_settings ();
WC_Admin_Settings :: output_fields ( $settings );
2013-07-26 14:36:28 +00:00
}
2018-04-12 15:59:42 +00:00
}
2013-07-26 14:36:28 +00:00
2018-04-12 15:59:42 +00:00
/**
* Save settings .
*/
public function save () {
global $current_section ;
2013-07-26 14:36:28 +00:00
2018-04-12 15:59:42 +00:00
if ( ! $current_section ) {
WC_Admin_Settings :: save_fields ( $this -> get_settings () );
2013-07-26 14:36:28 +00:00
2018-04-12 15:59:42 +00:00
} else {
$wc_emails = WC_Emails :: instance ();
2014-12-12 12:48:55 +00:00
2018-04-12 15:59:42 +00:00
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 ) {
do_action ( 'woocommerce_update_options_' . $this -> id . '_' . $email -> id );
2015-05-29 16:38:25 +00:00
}
}
2018-04-12 15:59:42 +00:00
} else {
do_action ( 'woocommerce_update_options_' . $this -> id . '_' . $current_section );
2013-07-26 14:36:28 +00:00
}
}
2018-04-12 15:59:42 +00:00
}
/**
* Output email notification settings .
*/
public function email_notification_setting () {
// Define emails that can be customised here.
$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 (
2019-03-04 14:53:19 +00:00
'woocommerce_email_setting_columns' ,
array (
2018-04-12 15:59:42 +00:00
'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>' ;
2015-11-02 16:27:00 +00:00
2018-03-05 18:59:17 +00:00
foreach ( $columns as $key => $column ) {
2015-11-02 16:27:00 +00:00
2018-04-12 15:59:42 +00:00
switch ( $key ) {
case 'name' :
echo '<td class="wc-email-settings-table-' . esc_attr ( $key ) . ' " >
2018-08-23 07:04:24 +00:00
< a href = " ' . esc_url( admin_url( 'admin.php?page=wc-settings&tab=email§ion=' . strtolower( $email_key ) ) ) . ' " > ' . esc_html( $email->get_title() ) . ' </ a >
2018-04-12 15:59:42 +00:00
' . 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 ) . ' " >
2018-08-23 07:04:24 +00:00
< a class = " button alignright " href = " ' . esc_url( admin_url( 'admin.php?page=wc-settings&tab=email§ion=' . strtolower( $email_key ) ) ) . ' " > ' . esc_html__( ' Manage ', ' woocommerce ' ) . ' </ a >
2018-04-12 15:59:42 +00:00
</ td > ' ;
break ;
default :
do_action ( 'woocommerce_email_setting_column_' . $key , $email );
break ;
}
2018-03-05 18:59:17 +00:00
}
2013-07-26 14:36:28 +00:00
2018-04-12 15:59:42 +00:00
echo '</tr>' ;
}
?>
</ tbody >
</ table >
</ td >
</ tr >
< ? php
}
}
2013-07-26 14:36:28 +00:00
2014-08-31 08:22:03 +00:00
return new WC_Settings_Emails ();