¿Cómo puedo evitar que Wordpress elimine el signo "arroba" (@) de la cadena de consulta de la URL?

Estoy tratando de pasar una dirección de correo electrónico a una página de wordpress como esta:

http://www.website.com/?email=fakeemail@yeahwho.com

Sin embargo, Wordpress lo convierte en esto:

http://www.website.com/?email=fakeemailyeahwho.com 

Incluso intento codificarlo con URL así:

http://www.website.com/?email=fakeemail%40yeahwho.com

Pero Wordpress es demasiado inteligente y aún elimina el% 40.

Entiendo que @ es un carácter reservado, pero debería poder seguir usando la versión codificada con URL. Por desgracia, Wordpress no quiere que sea así.

¿Cómo puedo obligar a Wordpress a respetar el signo @? Supongo que tendré que hackear los componentes internos o hacer algo de magia mod_rewrite.

preguntado el 08 de noviembre de 11 a las 11:11

4 Respuestas

desde http://www.webopius.com/content/137/using-custom-url-parameters-in-wordpress

Primero, agregue esto al archivo functions.php de su tema (o cree un complemento personalizado para hacerlo):

add_filter('query_vars', 'parameter_queryvars' );
function parameter_queryvars( $qvars )
{
    $qvars[] = 'email';
    return $qvars;
}

A continuación, intente pasar ?email=fakeemail-AT-yeahwho.com en la URL y luego convertirlo de nuevo con algo como esto:

global $wp_query;
if (isset($wp_query->query_vars['email']))
{
    $getemail = str_replace( '-AT-', '@', $wp_query->query_vars['email']);
}
// now use $getemail

Esto solo no funcionaría en la muy rara ocurrencia de un correo electrónico que realmente tenga "-at-" en él. Puede reemplazar por una cadena aún más oscura como '-AT6574892654738-' si está preocupado por esto.

Cualquiera que sea su solución final, no piratee el núcleo para que funcione. :)

respondido 09 nov., 11:22

Tenía un problema similar y pude aislar el problema en un complemento de SEO. Estoy seguro de que el complemento agregó un filtro al functions.php, pero como el complemento no se estaba utilizando, la desinstalación del complemento también resolvió el problema.

Respondido 14 Feb 13, 22:02

Debería haber tomado nota cuando noté el error. No recuerdo el complemento o en qué cliente estaba trabajando para intentar retrocederlo. - Jon McBrayer - GetUWired

También tuve este problema, pero no fue causado por un complemento. Fue el resultado de la redirección 301 que WordPress hace con respecto a la URL de su sitio que tiene o no tiene www. en eso.

Si la URL de mi sitio se definió como http://www.mydomain.com, entonces esto funcionaría como se esperaba: http://www.mydomain.com/?email=user@domain.com

Si el usuario llegó al sitio como: http://mydomain.com/?email=user@domain.com (NOTA: no www), entonces WordPress redirigiría a esto: http://www.mydomain.com/?email=userdomain.com (NOTA: el símbolo @ despojado)

Mi solución fue codificar la redirección www en el archivo htaccess, para que WordPress nunca tuviera la oportunidad de meterse con mi URL. Esta página ofrece ejemplos de líneas htaccess para redirigir no www a www y viceversa: http://dense13.com/blog/2008/02/27/redirecting-non-www-to-www-with-htaccess/

contestado el 07 de mayo de 13 a las 03:05

Hoy tenía un problema similar al intentar pasar los datos de Mailchimp a un formulario de gravedad en Wordpress. Encontré una solución. La pregunta original decía que Wordpress también estaba eliminando% 40, pero no fue así para mí en este caso.

1) En Mailchimp crea una nueva etiqueta Merge. Llamé al mío "Param de correo electrónico" y * | EMAIL2 | *

2) Exporta tu lista de suscriptores

3) Copie el contenido normal de la columna "correo electrónico" en la nueva columna "Parámetro de correo electrónico".

4) Haga una búsqueda y reemplazo para todos los símbolos @ a% 40

5) Importe su lista y marque la casilla que actualiza automáticamente esa lista

6) Actualice su URL para incluir el nuevo parámetro * | EMAIL2 | *

Eso funcionó para mí.

contestado el 01 de mayo de 15 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.