Плагин WordPress Subscribe2 экранирует символы в названии блога при отправке электронной почты
-
19-09-2019 - |
Вопрос
Я использую плагин Subscribe2 в своем новом блоге WordPress (http://www.adlerr.com).Название моего блога — «Блог Рои Адлера».При отправке электронного письма Subscribe2 экранирует апостроф в заголовке моего блога, и тема электронного письма принимается следующим образом:
[Roee Adler's Blog] Please confirm your request
Тело электронного письма:
Roee Adler's Blog has received a request to
subscribe for this email address. To complete your
request please click on the link below:
...
Я, естественно, хотел бы иметь «нормальную» неэкранированную версию названия моего блога в заголовке и теле.
Я задал этот вопрос на doctype.com безуспешно(вот вопрос), однако из ответов я понял, что это, вероятно, потребует изменений в PHP-коде плагина, поэтому я бы предпочел спросить об этом здесь.
Следуя ответам, которые я получил на doctype, я изменил следующий раздел кода:
function substitute($string = '') {
if ('' == $string) {
return;
}
$string = htmlspecialchars_decode(str_replace("BLOGNAME", get_option('blogname'), $string));
$string = str_replace("BLOGLINK", get_bloginfo('url'), $string);
$string = htmlspecialchars_decode(str_replace("TITLE", stripslashes($this->post_title), $string));
$string = str_replace("PERMALINK", $this->permalink, $string);
В приведенном выше коде я добавил htmlspecialchars_decode
оболочка для генерации BLOGNAME и TITLE, однако тема и тело электронного письма по-прежнему содержат '
.
Что я могу сделать, чтобы решить эту проблему?
Спасибо
Решение
Согласно документация по htmlspecialchars_decode
, тебе нужно пройти ENT_QUOTES
как $quote_style
аргумент в пользу его конвертации '
к '
.Попробуйте установить ENT_QUOTES
:
function substitute($string = '') {
if ('' == $string) {
return;
}
$string = htmlspecialchars_decode(str_replace("BLOGNAME", get_option('blogname'), $string), ENT_QUOTES);
$string = str_replace("BLOGLINK", get_bloginfo('url'), $string);
$string = htmlspecialchars_decode(str_replace("TITLE", stripslashes($this->post_title), $string), ENT_QUOTES);
$string = str_replace("PERMALINK", $this->permalink, $string);
Другие советы
WordPress заменяет апостроф в названии блога на '
прежде чем он сохранит его в базе данных.Если вы хотите переопределить это, отредактируйте файл function.php и вставьте следующий оператор:
update_option("blogname", "My Blog's Title With Apostrophe");
Это заставит заголовок быть именно тем, который вы вводите.Изменения названия блога, внесенные в меню «Настройки», не будут иметь никакого эффекта.