Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/09/2016, 06:50
jun3on
 
Fecha de Ingreso: febrero-2012
Ubicación: Badalona
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como pasar una variable de un dominio a otro dominio a través de la url

Hola a todos,

Al fin he conseguido realizar la "hazaña" . Probablemente no sea ni la manera más elegante, ni la más optimizada a nivel de código, pero parece que funciona correctamente.

A continuación explico paso a paso las acciones que he realizado:

Lo primero, era llenar automáticamente las urls de los posts de wordpress con la variable de adwords (en el caso de que el usuario venga de adwords) y la de sitioweb1 (esta variable siempre aparece).

Para empezar en el index.php de wordpress (no del template) he colocado el siguiente código:

Código PHP:
<?php

$lifetime
=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset(
$_GET['var'])) {
    
$_SESSION['var'] = $_GET['var'];
}
?>
Con esto, ya tengo la variable en $_SESSION guardada, lo siguiente, fue introducir el siguiente código en el functions.php del template:

Código PHP:
function append_query_string$url$post$leavename=false ) {
    if ( 
$post->post_type == 'post' ) {
        
$arr_params = array( $_SESSION 'var1' => 'sitioweb1' );
        
$url add_query_arg$arr_params $url);
    }
    return 
$url;
}
add_filter'post_link''append_query_string'10); 
Con esto ya nos coloca las variables "adwords", en el caso de que el usuario haya entrado a nuestra web con la url: http://www.sitioweb1.com?var=adwords y la variable "sitioweb1" de manera fija, por lo que la url del post de wordpress quedaría así:

http://www.sitioweb1.com/loquesea?var1=sitioweb1 <-------------Esta sería la url en el caso de que el usuario venga de tráfico orgánico.

http://www.sitioweb1.com/loquesea?var=adwords&var1=sitioweb1 <-------------Esta sería la url en el caso de que el usuario venga de tráfico de pago.

Bien, con esto tenemos solucionado lo de las variables en las urls.

A continuación para que el enlace del título de un post de wordpress no te lleve al post en si y te redirija hacia www.sitioweb2.com es una verdadera pesadilla ya que necesitas algún tipo de plugin de redirección, pero el problema es que las urls de salida las da el plugin y no wordpress por lo que el código del functions.php que he colocado arriba y que introduce las variables al final de la url no funcionaría (habría que tocar código del propio plugin de redirección). Al final decidí no utilizar ningún plugin de redirección y hacerlas manualmente a través del htaccess.

El htaccess quedaría así:

Código:
#BEGIN CUSTOM
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^loquesea/?$ http://www.sitioweb2.com/dondesea[L,R=302,QSA]

</IfModule>
#END CUSTOM

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
Con esto logramos que la url de wordpress haga una redirección a la nueva url de destino junto con las variables.

Hay que tener cuidado con dos cosas en el htaccess:

  • No meterle el "nuevo" RewriteRule que le hemos puesto, dentro de los corchetes de # BEGIN WordPress Y # END WordPress. Por eso está fuera y al principio (#BEGIN CUSTOM...), ya que si tenéis algún plugin de redirección o de SEO que toque el htaccess, os hará un reset del mismo dejando solo la parte original de Wordpress.
  • La Redirección que le he puesto al htaccess es la 302 (temporal) para pruebas, una vez todo funcione correctamente se cambia a 301

    Código:
    RewriteRule ^loquesea/?$ http://www.sitioweb2.com/dondesea [L,R=301,QSA]
    
Para finalizar, en www.sitioweb2.com he colocado el siguiente código en el index.php del template de joomla (había un error en el que puse en el primer post):

Código PHP:
<?php 
$lifetime
=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset(
$_GET["var"]) & empty($_GET["var1"])){
    
$_SESSION["var"] = $_GET["var"];
} else if (empty(
$_GET["var"]) & isset($_GET["var1"])) {
    
$_SESSION["var"] = $_GET["var1"];
}
?>
Con esto hace la comprobación de si viene una u otra variable, en el caso de que var=adwords venga llena guarda el valor en $_SESSION y en el caso de que solo venga var1=sitioweb1 también la guarda en $_SESSION.

Espero no haberme dejado nada.

Un saludo a todos

Última edición por jun3on; 28/09/2016 a las 07:40