Плагин WordPress Subscribe2 экранирует символы в названии блога при отправке электронной почты

StackOverflow https://stackoverflow.com/questions/1329205

Вопрос

Я использую плагин 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");

Это заставит заголовок быть именно тем, который вы вводите.Изменения названия блога, внесенные в меню «Настройки», не будут иметь никакого эффекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top