WordPress Plugin Subscribe2 escapa caracteres en nombre del blog al enviar correo electrónico
-
19-09-2019 - |
Pregunta
Estoy usando Subscribe2 plug-in en mi nuevo blog de WordPress próxima ( http://www.adlerr.com ). El título de mi blog es "Blog de Roee Adler". Cuando se envía un correo electrónico, Subscribe2 escapa el apóstrofe en el título de mi blog, y se recibe el asunto del correo electrónico de la siguiente manera:
[Roee Adler's Blog] Please confirm your request
El cuerpo del correo electrónico es:
Roee Adler's Blog has received a request to
subscribe for this email address. To complete your
request please click on the link below:
...
Me gustaría tener, naturalmente, la versión "normal" no-escapado de mi nombre del blog en el título y el cuerpo.
hice esta pregunta en doctype.com sin éxito ( aquí está la pregunta ), sin embargo a partir de las respuestas que entendí esto probablemente requiere cambios en el código PHP del plug-in, así que en vez pediría aquí.
Después de las respuestas que he recibido en el tipo de documento, que alteró la siguiente sección de código:
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);
En el código anterior, añadí una envoltura htmlspecialchars_decode
para la generación de ambos BLOGNAME y el título, sin embargo, el asunto del correo electrónico y el cuerpo todavía contiene '
.
¿Qué puedo hacer para resolver esto?
Gracias
Solución
Según la documentación sobre htmlspecialchars_decode
, necesita ENT_QUOTES
pasar como argumento $quote_style
para que pueda convertir a '
'
. Intenta establecer 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);
Otros consejos
WordPress sustituye a un apóstrofe en el título del blog con '
antes de que se almacena en la base de datos. Si desea anular, edite el archivo functions.php e insertar la siguiente declaración:
update_option("blogname", "My Blog's Title With Apostrophe");
Esto forzará el título a ser exactamente lo que escribe. Los cambios en el título del blog que realice en el menú de ajustes no tendrán ningún efecto.