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, 3 );
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