Плагин WordPress Subscribe2 экранирует символы в имени блога при отправке электронной почты - PullRequest
2 голосов
/ 25 августа 2009

Я использую плагин 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, однако тема и текст сообщения по-прежнему содержат '.

Что я могу сделать, чтобы решить эту проблему?

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 августа 2009

Согласно документации по 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);
0 голосов
/ 12 марта 2013

WordPress заменяет апостроф в заголовке блога на ' перед тем, как сохранить его в базе данных. Если вы хотите переопределить это, отредактируйте файл functions.php и вставьте следующий оператор:

update_option("blogname", "My Blog's Title With Apostrophe");

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

...