[Optimizado:] Adsense al navegante que llega del buscador

  • Autor Autor KnxDT
  • Fecha de inicio Fecha de inicio
K

KnxDT

Zeta
SEO
Resumen:

Este código permite mostrar publicidad a los visiitantes de navegador en todo su recorrido por el sitio, optimizando el anterior código que ya conocemos que solo muestra publicidad en el primer código llegando del buscador (Google, Bing, Yahoo, etc.). Además funciona para búsquedas de Google Imágenes.

Comenzamos:

Ya SoloNegocios había dado luces con algo así:

http://forobeta.com/tutoriales/2248...ue-llegan-desde-google-y-google-imagenes.html

Por desgracia el código solo mostraba publicidad en el primer post, luego al seguir navegando el Adsense ya no aparecía en los demás. En todo caso, luego de buscar por horas, hacer cambios, optimizaciones, etc. Llegué a esto:

Colocan éste código en su header.php:

PHP:
<?php
session_start();
if (!isset($_SESSION['show_ad'])){  
   $_SESSION['show_ad'] = 0; 
   if (preg_match('/q=|search/', $_SERVER['HTTP_REFERER'])||preg_match('/q=|images/', $_SERVER['HTTP_REFERER'])){ 
      $_SESSION['show_ad'] = 1; };
   if (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) { 
      $_SESSION['show_ad'] = 0; };
};
?>

Lo que hace este código es iniciar una sesión para que los visitantes de Google y otros buscadores (Bing, Yahoo son los que he probado) vean la publicidad en todo su recorrido, salvo cierren su navegador y entren directamente (ya que se eliminan las sesiones por ser temporales).

La variable de sesión se llama show_ad. Tomando el aporte de Darkada (a.k.a SoloNegocios) incluí lo de la búsqueda de imágenes. También funciona, lo he probado.

La variable sesión toma el valor de 1 cuando viene de buscador y 0 cuando no viene de buscador, según lo que estamos definiendo. Si la variable no está inicializada, se inicia una nueva sesión.

El código no muestra publicidad al Googlebot, para evitar una carga innecesaria de contenido.

Nota importante (esto no dice en ningún lado): Recomiendo colocar este código justo después del </title>, de lo contrario si es que usan el All in One SEO Pack, que supongo es la mayoría, se ocasionará un error en PHP por variables ya enviadas (solo créanme, sino hagan la prueba y pónganlo al final del header.php o justo antes del </header>).

Listo, ahora falta indicar dónde quieren mostrar la publicidad. Usualmente es el single.php. Algo así:

PHP:
<?php if ($_SESSION['show_ad'] == 1){ ?>
    <//.. Aqui colocan su codigo Adsense ..//>
<?php } ?>

Lo que hacemos aquí es mostrar publicidad al que tenga una sesión de publicidad en 1 (que hemos definido así, haciendo analogía al true).

Si tienen dudas, son bienvenidas. Sigo trabajando en el código pues creo que se puede mejorar. Aunque es un poco menos liviano, creo que puede servirle a muchos.

Saludos.

PD: Me tomó mucho rato (son más de las 5 am y no he dormido) así que lo comparto aquí, espero no sea tomado a mal haciendo alusión a que es repetitivo. En fin, que les sirva.
 
Muchas gracias, comprobaré si funciona 😉
La verdad es que es muy util, ya que con el anterior sistema se convertian en referidos nada mas cambiar de pagina ^^

Saludos
 
Muchas gracias, comprobaré si funciona 😉

Pues debería 😀, estuve haciendo la prueba en vivo con mi blog TecnologiaDiaria.com ... estando online y generando N errores xD, pero así se aprende.

Me cuentas cualquier cosa.
 
Yo lo tenía puesto de esa manera en arteCG, lo malo que al tener wp-cache, si venían de buscador a una página que ya estuviera en cache sin la publicidad, saldría sin publicidad, con lo que las impresiones se reducían bastante. Desde que lo quité (ahora muestro los anuncios a todos) han aumentado bastante los clicks e ingresos.
 
te luciste knxdt muchs gracias
 
Para que no les marque algun error la session_start(); debe estar antes de un output html. Ya que esa función se debe hacer antes de que el servidor envié la pagina al navegador ya que debe guardar la sesión.
 
Buen aporte KnxDT!
 
Buen aporte KnxDT, seguro servirá para quienes tengan muchas paginas vistas por vista. Yo paso, el 85% de la gente que llega desde buscadores a mi sitio solo ve una página XD
 
Nota importante (esto no dice en ningún lado): Recomiendo colocar este código justo después del </title>, de lo contrario si es que usan el All in One SEO Pack, que supongo es la mayoría, se ocasionará un error en PHP por variables ya enviadas (solo créanme, sino hagan la prueba y pónganlo al final del header.php o justo antes del </header>).

Con razón nunca me había funcionado el session_start(); xD

Con este código suben mas las probabilidades de click 😛arty:, para mi es necesario ya que mis visitantes se ponen a navegar bastante por el sitio xD

EDITO: Que menso soy si me funciona se me habia olvidado cerrar el navegador para realizar las pruebas xD
 
Última edición:
Con razón nunca me había funcionado el session_start(); xD

Con este código suben mas las probabilidades de click 😛arty:, para mi es necesario ya que mis visitantes se ponen a navegar bastante por el sitio xD

EDITO: Que menso soy si me funciona se me habia olvidado cerrar el navegador para realizar las pruebas xD

Se, a veces se nos pasa, yo también tuve unos problemas con eso al inicio, pero luego es solo cuestión de concepto 😉

PD: Lol, gracias por los deditos con esteroides.
 
Gracias bro, excelente aporte. Ahora lo integro en mi blog 😉 Dedo verde para ti Enlace eliminado
 
Muchas gracias, acabo de incorporar el código en mi blog 😀
 
Interesante, Se agradece el aporte 😀
 
Gracias a ustedes por darse el trabajo de agradecer, con o sin manitas 🙂
 
Sigo todos los pasos, inclusive probe diferentes posiciones para el código y me da este error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/alejo/public_html/juegosparacelular.info/wp-content/themes/itheme-1-1/header.php:6) in /home/alejo/public_html/juegosparacelular.info/wp-content/themes/itheme-1-1/header.php on line 10

Lo estoy colocando tal cual después del title pero nada :s alguna solución por favor ?
 
borra las cookies de tu navegdor.
 
Intenta ponerlo arriba de
<?php wp_head(); ?> del header.php
 
Atrás
Arriba