Edit File by line
/home/zeestwma/richards.../wp-inclu...
File: pluggable.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* These functions can be replaced via plugins. If plugins do not redefine these
[2] Fix | Delete
* functions, then these will be used instead.
[3] Fix | Delete
*
[4] Fix | Delete
* @package WordPress
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
if ( ! function_exists( 'wp_set_current_user' ) ) :
[8] Fix | Delete
/**
[9] Fix | Delete
* Changes the current user by ID or name.
[10] Fix | Delete
*
[11] Fix | Delete
* Set $id to null and specify a name if you do not know a user's ID.
[12] Fix | Delete
*
[13] Fix | Delete
* Some WordPress functionality is based on the current user and not based on
[14] Fix | Delete
* the signed in user. Therefore, it opens the ability to edit and perform
[15] Fix | Delete
* actions on users who aren't signed in.
[16] Fix | Delete
*
[17] Fix | Delete
* @since 2.0.3
[18] Fix | Delete
*
[19] Fix | Delete
* @global WP_User $current_user The current user object which holds the user data.
[20] Fix | Delete
*
[21] Fix | Delete
* @param int|null $id User ID.
[22] Fix | Delete
* @param string $name User's username.
[23] Fix | Delete
* @return WP_User Current user User object.
[24] Fix | Delete
*/
[25] Fix | Delete
function wp_set_current_user( $id, $name = '' ) {
[26] Fix | Delete
global $current_user;
[27] Fix | Delete
[28] Fix | Delete
// If `$id` matches the current user, there is nothing to do.
[29] Fix | Delete
if ( isset( $current_user )
[30] Fix | Delete
&& ( $current_user instanceof WP_User )
[31] Fix | Delete
&& ( $id === $current_user->ID )
[32] Fix | Delete
&& ( null !== $id )
[33] Fix | Delete
) {
[34] Fix | Delete
return $current_user;
[35] Fix | Delete
}
[36] Fix | Delete
[37] Fix | Delete
$current_user = new WP_User( $id, $name );
[38] Fix | Delete
[39] Fix | Delete
setup_userdata( $current_user->ID );
[40] Fix | Delete
[41] Fix | Delete
/**
[42] Fix | Delete
* Fires after the current user is set.
[43] Fix | Delete
*
[44] Fix | Delete
* @since 2.0.1
[45] Fix | Delete
*/
[46] Fix | Delete
do_action( 'set_current_user' );
[47] Fix | Delete
[48] Fix | Delete
return $current_user;
[49] Fix | Delete
}
[50] Fix | Delete
endif;
[51] Fix | Delete
[52] Fix | Delete
if ( ! function_exists( 'wp_get_current_user' ) ) :
[53] Fix | Delete
/**
[54] Fix | Delete
* Retrieves the current user object.
[55] Fix | Delete
*
[56] Fix | Delete
* Will set the current user, if the current user is not set. The current user
[57] Fix | Delete
* will be set to the logged-in person. If no user is logged-in, then it will
[58] Fix | Delete
* set the current user to 0, which is invalid and won't have any permissions.
[59] Fix | Delete
*
[60] Fix | Delete
* @since 2.0.3
[61] Fix | Delete
*
[62] Fix | Delete
* @see _wp_get_current_user()
[63] Fix | Delete
* @global WP_User $current_user Checks if the current user is set.
[64] Fix | Delete
*
[65] Fix | Delete
* @return WP_User Current WP_User instance.
[66] Fix | Delete
*/
[67] Fix | Delete
function wp_get_current_user() {
[68] Fix | Delete
return _wp_get_current_user();
[69] Fix | Delete
}
[70] Fix | Delete
endif;
[71] Fix | Delete
[72] Fix | Delete
if ( ! function_exists( 'get_userdata' ) ) :
[73] Fix | Delete
/**
[74] Fix | Delete
* Retrieves user info by user ID.
[75] Fix | Delete
*
[76] Fix | Delete
* @since 0.71
[77] Fix | Delete
*
[78] Fix | Delete
* @param int $user_id User ID
[79] Fix | Delete
* @return WP_User|false WP_User object on success, false on failure.
[80] Fix | Delete
*/
[81] Fix | Delete
function get_userdata( $user_id ) {
[82] Fix | Delete
return get_user_by( 'id', $user_id );
[83] Fix | Delete
}
[84] Fix | Delete
endif;
[85] Fix | Delete
[86] Fix | Delete
if ( ! function_exists( 'get_user_by' ) ) :
[87] Fix | Delete
/**
[88] Fix | Delete
* Retrieves user info by a given field.
[89] Fix | Delete
*
[90] Fix | Delete
* @since 2.8.0
[91] Fix | Delete
* @since 4.4.0 Added 'ID' as an alias of 'id' for the `$field` parameter.
[92] Fix | Delete
*
[93] Fix | Delete
* @global WP_User $current_user The current user object which holds the user data.
[94] Fix | Delete
*
[95] Fix | Delete
* @param string $field The field to retrieve the user with. id | ID | slug | email | login.
[96] Fix | Delete
* @param int|string $value A value for $field. A user ID, slug, email address, or login name.
[97] Fix | Delete
* @return WP_User|false WP_User object on success, false on failure.
[98] Fix | Delete
*/
[99] Fix | Delete
function get_user_by( $field, $value ) {
[100] Fix | Delete
$userdata = WP_User::get_data_by( $field, $value );
[101] Fix | Delete
[102] Fix | Delete
if ( ! $userdata ) {
[103] Fix | Delete
return false;
[104] Fix | Delete
}
[105] Fix | Delete
[106] Fix | Delete
$user = new WP_User();
[107] Fix | Delete
$user->init( $userdata );
[108] Fix | Delete
[109] Fix | Delete
return $user;
[110] Fix | Delete
}
[111] Fix | Delete
endif;
[112] Fix | Delete
[113] Fix | Delete
if ( ! function_exists( 'cache_users' ) ) :
[114] Fix | Delete
/**
[115] Fix | Delete
* Retrieves info for user lists to prevent multiple queries by get_userdata().
[116] Fix | Delete
*
[117] Fix | Delete
* @since 3.0.0
[118] Fix | Delete
*
[119] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[120] Fix | Delete
*
[121] Fix | Delete
* @param int[] $user_ids User ID numbers list
[122] Fix | Delete
*/
[123] Fix | Delete
function cache_users( $user_ids ) {
[124] Fix | Delete
global $wpdb;
[125] Fix | Delete
[126] Fix | Delete
update_meta_cache( 'user', $user_ids );
[127] Fix | Delete
[128] Fix | Delete
$clean = _get_non_cached_ids( $user_ids, 'users' );
[129] Fix | Delete
[130] Fix | Delete
if ( empty( $clean ) ) {
[131] Fix | Delete
return;
[132] Fix | Delete
}
[133] Fix | Delete
[134] Fix | Delete
$list = implode( ',', $clean );
[135] Fix | Delete
[136] Fix | Delete
$users = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($list)" );
[137] Fix | Delete
[138] Fix | Delete
foreach ( $users as $user ) {
[139] Fix | Delete
update_user_caches( $user );
[140] Fix | Delete
}
[141] Fix | Delete
}
[142] Fix | Delete
endif;
[143] Fix | Delete
[144] Fix | Delete
if ( ! function_exists( 'wp_mail' ) ) :
[145] Fix | Delete
/**
[146] Fix | Delete
* Sends an email, similar to PHP's mail function.
[147] Fix | Delete
*
[148] Fix | Delete
* A true return value does not automatically mean that the user received the
[149] Fix | Delete
* email successfully. It just only means that the method used was able to
[150] Fix | Delete
* process the request without any errors.
[151] Fix | Delete
*
[152] Fix | Delete
* The default content type is `text/plain` which does not allow using HTML.
[153] Fix | Delete
* However, you can set the content type of the email by using the
[154] Fix | Delete
* {@see 'wp_mail_content_type'} filter.
[155] Fix | Delete
*
[156] Fix | Delete
* The default charset is based on the charset used on the blog. The charset can
[157] Fix | Delete
* be set using the {@see 'wp_mail_charset'} filter.
[158] Fix | Delete
*
[159] Fix | Delete
* @since 1.2.1
[160] Fix | Delete
* @since 5.5.0 is_email() is used for email validation,
[161] Fix | Delete
* instead of PHPMailer's default validator.
[162] Fix | Delete
*
[163] Fix | Delete
* @global PHPMailer\PHPMailer\PHPMailer $phpmailer
[164] Fix | Delete
*
[165] Fix | Delete
* @param string|string[] $to Array or comma-separated list of email addresses to send message.
[166] Fix | Delete
* @param string $subject Email subject.
[167] Fix | Delete
* @param string $message Message contents.
[168] Fix | Delete
* @param string|string[] $headers Optional. Additional headers.
[169] Fix | Delete
* @param string|string[] $attachments Optional. Paths to files to attach.
[170] Fix | Delete
* @return bool Whether the email was sent successfully.
[171] Fix | Delete
*/
[172] Fix | Delete
function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {
[173] Fix | Delete
// Compact the input, apply the filters, and extract them back out.
[174] Fix | Delete
[175] Fix | Delete
/**
[176] Fix | Delete
* Filters the wp_mail() arguments.
[177] Fix | Delete
*
[178] Fix | Delete
* @since 2.2.0
[179] Fix | Delete
*
[180] Fix | Delete
* @param array $args {
[181] Fix | Delete
* Array of the `wp_mail()` arguments.
[182] Fix | Delete
*
[183] Fix | Delete
* @type string|string[] $to Array or comma-separated list of email addresses to send message.
[184] Fix | Delete
* @type string $subject Email subject.
[185] Fix | Delete
* @type string $message Message contents.
[186] Fix | Delete
* @type string|string[] $headers Additional headers.
[187] Fix | Delete
* @type string|string[] $attachments Paths to files to attach.
[188] Fix | Delete
* }
[189] Fix | Delete
*/
[190] Fix | Delete
$atts = apply_filters( 'wp_mail', compact( 'to', 'subject', 'message', 'headers', 'attachments' ) );
[191] Fix | Delete
[192] Fix | Delete
/**
[193] Fix | Delete
* Filters whether to preempt sending an email.
[194] Fix | Delete
*
[195] Fix | Delete
* Returning a non-null value will short-circuit {@see wp_mail()}, returning
[196] Fix | Delete
* that value instead. A boolean return value should be used to indicate whether
[197] Fix | Delete
* the email was successfully sent.
[198] Fix | Delete
*
[199] Fix | Delete
* @since 5.7.0
[200] Fix | Delete
*
[201] Fix | Delete
* @param null|bool $return Short-circuit return value.
[202] Fix | Delete
* @param array $atts {
[203] Fix | Delete
* Array of the `wp_mail()` arguments.
[204] Fix | Delete
*
[205] Fix | Delete
* @type string|string[] $to Array or comma-separated list of email addresses to send message.
[206] Fix | Delete
* @type string $subject Email subject.
[207] Fix | Delete
* @type string $message Message contents.
[208] Fix | Delete
* @type string|string[] $headers Additional headers.
[209] Fix | Delete
* @type string|string[] $attachments Paths to files to attach.
[210] Fix | Delete
* }
[211] Fix | Delete
*/
[212] Fix | Delete
$pre_wp_mail = apply_filters( 'pre_wp_mail', null, $atts );
[213] Fix | Delete
[214] Fix | Delete
if ( null !== $pre_wp_mail ) {
[215] Fix | Delete
return $pre_wp_mail;
[216] Fix | Delete
}
[217] Fix | Delete
[218] Fix | Delete
if ( isset( $atts['to'] ) ) {
[219] Fix | Delete
$to = $atts['to'];
[220] Fix | Delete
}
[221] Fix | Delete
[222] Fix | Delete
if ( ! is_array( $to ) ) {
[223] Fix | Delete
$to = explode( ',', $to );
[224] Fix | Delete
}
[225] Fix | Delete
[226] Fix | Delete
if ( isset( $atts['subject'] ) ) {
[227] Fix | Delete
$subject = $atts['subject'];
[228] Fix | Delete
}
[229] Fix | Delete
[230] Fix | Delete
if ( isset( $atts['message'] ) ) {
[231] Fix | Delete
$message = $atts['message'];
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
if ( isset( $atts['headers'] ) ) {
[235] Fix | Delete
$headers = $atts['headers'];
[236] Fix | Delete
}
[237] Fix | Delete
[238] Fix | Delete
if ( isset( $atts['attachments'] ) ) {
[239] Fix | Delete
$attachments = $atts['attachments'];
[240] Fix | Delete
}
[241] Fix | Delete
[242] Fix | Delete
if ( ! is_array( $attachments ) ) {
[243] Fix | Delete
$attachments = explode( "\n", str_replace( "\r\n", "\n", $attachments ) );
[244] Fix | Delete
}
[245] Fix | Delete
global $phpmailer;
[246] Fix | Delete
[247] Fix | Delete
// (Re)create it, if it's gone missing.
[248] Fix | Delete
if ( ! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) ) {
[249] Fix | Delete
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
[250] Fix | Delete
require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
[251] Fix | Delete
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
[252] Fix | Delete
$phpmailer = new PHPMailer\PHPMailer\PHPMailer( true );
[253] Fix | Delete
[254] Fix | Delete
$phpmailer::$validator = static function ( $email ) {
[255] Fix | Delete
return (bool) is_email( $email );
[256] Fix | Delete
};
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
// Headers.
[260] Fix | Delete
$cc = array();
[261] Fix | Delete
$bcc = array();
[262] Fix | Delete
$reply_to = array();
[263] Fix | Delete
[264] Fix | Delete
if ( empty( $headers ) ) {
[265] Fix | Delete
$headers = array();
[266] Fix | Delete
} else {
[267] Fix | Delete
if ( ! is_array( $headers ) ) {
[268] Fix | Delete
/*
[269] Fix | Delete
* Explode the headers out, so this function can take
[270] Fix | Delete
* both string headers and an array of headers.
[271] Fix | Delete
*/
[272] Fix | Delete
$tempheaders = explode( "\n", str_replace( "\r\n", "\n", $headers ) );
[273] Fix | Delete
} else {
[274] Fix | Delete
$tempheaders = $headers;
[275] Fix | Delete
}
[276] Fix | Delete
$headers = array();
[277] Fix | Delete
[278] Fix | Delete
// If it's actually got contents.
[279] Fix | Delete
if ( ! empty( $tempheaders ) ) {
[280] Fix | Delete
// Iterate through the raw headers.
[281] Fix | Delete
foreach ( (array) $tempheaders as $header ) {
[282] Fix | Delete
if ( ! str_contains( $header, ':' ) ) {
[283] Fix | Delete
if ( false !== stripos( $header, 'boundary=' ) ) {
[284] Fix | Delete
$parts = preg_split( '/boundary=/i', trim( $header ) );
[285] Fix | Delete
$boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) );
[286] Fix | Delete
}
[287] Fix | Delete
continue;
[288] Fix | Delete
}
[289] Fix | Delete
// Explode them out.
[290] Fix | Delete
list( $name, $content ) = explode( ':', trim( $header ), 2 );
[291] Fix | Delete
[292] Fix | Delete
// Cleanup crew.
[293] Fix | Delete
$name = trim( $name );
[294] Fix | Delete
$content = trim( $content );
[295] Fix | Delete
[296] Fix | Delete
switch ( strtolower( $name ) ) {
[297] Fix | Delete
// Mainly for legacy -- process a "From:" header if it's there.
[298] Fix | Delete
case 'from':
[299] Fix | Delete
$bracket_pos = strpos( $content, '<' );
[300] Fix | Delete
if ( false !== $bracket_pos ) {
[301] Fix | Delete
// Text before the bracketed email is the "From" name.
[302] Fix | Delete
if ( $bracket_pos > 0 ) {
[303] Fix | Delete
$from_name = substr( $content, 0, $bracket_pos );
[304] Fix | Delete
$from_name = str_replace( '"', '', $from_name );
[305] Fix | Delete
$from_name = trim( $from_name );
[306] Fix | Delete
}
[307] Fix | Delete
[308] Fix | Delete
$from_email = substr( $content, $bracket_pos + 1 );
[309] Fix | Delete
$from_email = str_replace( '>', '', $from_email );
[310] Fix | Delete
$from_email = trim( $from_email );
[311] Fix | Delete
[312] Fix | Delete
// Avoid setting an empty $from_email.
[313] Fix | Delete
} elseif ( '' !== trim( $content ) ) {
[314] Fix | Delete
$from_email = trim( $content );
[315] Fix | Delete
}
[316] Fix | Delete
break;
[317] Fix | Delete
case 'content-type':
[318] Fix | Delete
if ( str_contains( $content, ';' ) ) {
[319] Fix | Delete
list( $type, $charset_content ) = explode( ';', $content );
[320] Fix | Delete
$content_type = trim( $type );
[321] Fix | Delete
if ( false !== stripos( $charset_content, 'charset=' ) ) {
[322] Fix | Delete
$charset = trim( str_replace( array( 'charset=', '"' ), '', $charset_content ) );
[323] Fix | Delete
} elseif ( false !== stripos( $charset_content, 'boundary=' ) ) {
[324] Fix | Delete
$boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset_content ) );
[325] Fix | Delete
$charset = '';
[326] Fix | Delete
}
[327] Fix | Delete
[328] Fix | Delete
// Avoid setting an empty $content_type.
[329] Fix | Delete
} elseif ( '' !== trim( $content ) ) {
[330] Fix | Delete
$content_type = trim( $content );
[331] Fix | Delete
}
[332] Fix | Delete
break;
[333] Fix | Delete
case 'cc':
[334] Fix | Delete
$cc = array_merge( (array) $cc, explode( ',', $content ) );
[335] Fix | Delete
break;
[336] Fix | Delete
case 'bcc':
[337] Fix | Delete
$bcc = array_merge( (array) $bcc, explode( ',', $content ) );
[338] Fix | Delete
break;
[339] Fix | Delete
case 'reply-to':
[340] Fix | Delete
$reply_to = array_merge( (array) $reply_to, explode( ',', $content ) );
[341] Fix | Delete
break;
[342] Fix | Delete
default:
[343] Fix | Delete
// Add it to our grand headers array.
[344] Fix | Delete
$headers[ trim( $name ) ] = trim( $content );
[345] Fix | Delete
break;
[346] Fix | Delete
}
[347] Fix | Delete
}
[348] Fix | Delete
}
[349] Fix | Delete
}
[350] Fix | Delete
[351] Fix | Delete
// Empty out the values that may be set.
[352] Fix | Delete
$phpmailer->clearAllRecipients();
[353] Fix | Delete
$phpmailer->clearAttachments();
[354] Fix | Delete
$phpmailer->clearCustomHeaders();
[355] Fix | Delete
$phpmailer->clearReplyTos();
[356] Fix | Delete
$phpmailer->Body = '';
[357] Fix | Delete
$phpmailer->AltBody = '';
[358] Fix | Delete
[359] Fix | Delete
// Set "From" name and email.
[360] Fix | Delete
[361] Fix | Delete
// If we don't have a name from the input headers.
[362] Fix | Delete
if ( ! isset( $from_name ) ) {
[363] Fix | Delete
$from_name = 'WordPress';
[364] Fix | Delete
}
[365] Fix | Delete
[366] Fix | Delete
/*
[367] Fix | Delete
* If we don't have an email from the input headers, default to wordpress@$sitename
[368] Fix | Delete
* Some hosts will block outgoing mail from this address if it doesn't exist,
[369] Fix | Delete
* but there's no easy alternative. Defaulting to admin_email might appear to be
[370] Fix | Delete
* another option, but some hosts may refuse to relay mail from an unknown domain.
[371] Fix | Delete
* See https://core.trac.wordpress.org/ticket/5007.
[372] Fix | Delete
*/
[373] Fix | Delete
if ( ! isset( $from_email ) ) {
[374] Fix | Delete
// Get the site domain and get rid of www.
[375] Fix | Delete
$sitename = wp_parse_url( network_home_url(), PHP_URL_HOST );
[376] Fix | Delete
$from_email = 'wordpress@';
[377] Fix | Delete
[378] Fix | Delete
if ( null !== $sitename ) {
[379] Fix | Delete
if ( str_starts_with( $sitename, 'www.' ) ) {
[380] Fix | Delete
$sitename = substr( $sitename, 4 );
[381] Fix | Delete
}
[382] Fix | Delete
[383] Fix | Delete
$from_email .= $sitename;
[384] Fix | Delete
}
[385] Fix | Delete
}
[386] Fix | Delete
[387] Fix | Delete
/**
[388] Fix | Delete
* Filters the email address to send from.
[389] Fix | Delete
*
[390] Fix | Delete
* @since 2.2.0
[391] Fix | Delete
*
[392] Fix | Delete
* @param string $from_email Email address to send from.
[393] Fix | Delete
*/
[394] Fix | Delete
$from_email = apply_filters( 'wp_mail_from', $from_email );
[395] Fix | Delete
[396] Fix | Delete
/**
[397] Fix | Delete
* Filters the name to associate with the "from" email address.
[398] Fix | Delete
*
[399] Fix | Delete
* @since 2.3.0
[400] Fix | Delete
*
[401] Fix | Delete
* @param string $from_name Name associated with the "from" email address.
[402] Fix | Delete
*/
[403] Fix | Delete
$from_name = apply_filters( 'wp_mail_from_name', $from_name );
[404] Fix | Delete
[405] Fix | Delete
try {
[406] Fix | Delete
$phpmailer->setFrom( $from_email, $from_name, false );
[407] Fix | Delete
} catch ( PHPMailer\PHPMailer\Exception $e ) {
[408] Fix | Delete
$mail_error_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' );
[409] Fix | Delete
$mail_error_data['phpmailer_exception_code'] = $e->getCode();
[410] Fix | Delete
[411] Fix | Delete
/** This filter is documented in wp-includes/pluggable.php */
[412] Fix | Delete
do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_error_data ) );
[413] Fix | Delete
[414] Fix | Delete
return false;
[415] Fix | Delete
}
[416] Fix | Delete
[417] Fix | Delete
// Set mail's subject and body.
[418] Fix | Delete
$phpmailer->Subject = $subject;
[419] Fix | Delete
$phpmailer->Body = $message;
[420] Fix | Delete
[421] Fix | Delete
// Set destination addresses, using appropriate methods for handling addresses.
[422] Fix | Delete
$address_headers = compact( 'to', 'cc', 'bcc', 'reply_to' );
[423] Fix | Delete
[424] Fix | Delete
foreach ( $address_headers as $address_header => $addresses ) {
[425] Fix | Delete
if ( empty( $addresses ) ) {
[426] Fix | Delete
continue;
[427] Fix | Delete
}
[428] Fix | Delete
[429] Fix | Delete
foreach ( (array) $addresses as $address ) {
[430] Fix | Delete
try {
[431] Fix | Delete
// Break $recipient into name and address parts if in the format "Foo <bar@baz.com>".
[432] Fix | Delete
$recipient_name = '';
[433] Fix | Delete
[434] Fix | Delete
if ( preg_match( '/(.*)<(.+)>/', $address, $matches ) ) {
[435] Fix | Delete
if ( count( $matches ) === 3 ) {
[436] Fix | Delete
$recipient_name = $matches[1];
[437] Fix | Delete
$address = $matches[2];
[438] Fix | Delete
}
[439] Fix | Delete
}
[440] Fix | Delete
[441] Fix | Delete
switch ( $address_header ) {
[442] Fix | Delete
case 'to':
[443] Fix | Delete
$phpmailer->addAddress( $address, $recipient_name );
[444] Fix | Delete
break;
[445] Fix | Delete
case 'cc':
[446] Fix | Delete
$phpmailer->addCc( $address, $recipient_name );
[447] Fix | Delete
break;
[448] Fix | Delete
case 'bcc':
[449] Fix | Delete
$phpmailer->addBcc( $address, $recipient_name );
[450] Fix | Delete
break;
[451] Fix | Delete
case 'reply_to':
[452] Fix | Delete
$phpmailer->addReplyTo( $address, $recipient_name );
[453] Fix | Delete
break;
[454] Fix | Delete
}
[455] Fix | Delete
} catch ( PHPMailer\PHPMailer\Exception $e ) {
[456] Fix | Delete
continue;
[457] Fix | Delete
}
[458] Fix | Delete
}
[459] Fix | Delete
}
[460] Fix | Delete
[461] Fix | Delete
// Set to use PHP's mail().
[462] Fix | Delete
$phpmailer->isMail();
[463] Fix | Delete
[464] Fix | Delete
// Set Content-Type and charset.
[465] Fix | Delete
[466] Fix | Delete
// If we don't have a Content-Type from the input headers.
[467] Fix | Delete
if ( ! isset( $content_type ) ) {
[468] Fix | Delete
$content_type = 'text/plain';
[469] Fix | Delete
}
[470] Fix | Delete
[471] Fix | Delete
/**
[472] Fix | Delete
* Filters the wp_mail() content type.
[473] Fix | Delete
*
[474] Fix | Delete
* @since 2.3.0
[475] Fix | Delete
*
[476] Fix | Delete
* @param string $content_type Default wp_mail() content type.
[477] Fix | Delete
*/
[478] Fix | Delete
$content_type = apply_filters( 'wp_mail_content_type', $content_type );
[479] Fix | Delete
[480] Fix | Delete
$phpmailer->ContentType = $content_type;
[481] Fix | Delete
[482] Fix | Delete
// Set whether it's plaintext, depending on $content_type.
[483] Fix | Delete
if ( 'text/html' === $content_type ) {
[484] Fix | Delete
$phpmailer->isHTML( true );
[485] Fix | Delete
}
[486] Fix | Delete
[487] Fix | Delete
// If we don't have a charset from the input headers.
[488] Fix | Delete
if ( ! isset( $charset ) ) {
[489] Fix | Delete
$charset = get_bloginfo( 'charset' );
[490] Fix | Delete
}
[491] Fix | Delete
[492] Fix | Delete
/**
[493] Fix | Delete
* Filters the default wp_mail() charset.
[494] Fix | Delete
*
[495] Fix | Delete
* @since 2.3.0
[496] Fix | Delete
*
[497] Fix | Delete
* @param string $charset Default email charset.
[498] Fix | Delete
*/
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function