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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top