WordPress Subscribe2 プラグインはメール送信時にブログ名の文字をエスケープします
-
19-09-2019 - |
質問
私は新しいWordPressブログでSubscribe2プラグインを使用しています(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 はブログタイトルのアポストロフィを次のように置き換えます。 '
データベースに保存する前に。これをオーバーライドする場合は、functions.php ファイルを編集して次のステートメントを挿入します。
update_option("blogname", "My Blog's Title With Apostrophe");
これにより、タイトルは入力したものと同じになります。[設定] メニューでブログ タイトルを変更しても、効果はありません。