我在即将发布的新WordPress博客(http://www.adlerr.com)中使用了Subscribe2插件。我的博客标题是“Roee Adler的博客”。发送电子邮件时,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上问了这个问题没有成功(here's the question),但是从我理解的答案中可能需要更改插件的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,但是电子邮件主题和正文仍然包含'
。
我该怎么做才能解决这个问题?
由于
答案 0 :(得分:3)
根据the documentation on 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);
答案 1 :(得分:0)
WordPress将博客标题中的撇号替换为'
,然后将其存储在数据库中。如果要覆盖它,请编辑functions.php文件并插入以下语句:
update_option("blogname", "My Blog's Title With Apostrophe");
这将迫使标题正是您输入的内容。您在“设置”菜单中对博客标题所做的更改将不起作用。