8 de Marzo de 2009

Distribuir ganancias de Adsense en un blog con diferentes autores

Muchas veces, queremos personalizar determinados aspectos que un plugin no nos permite. Es el caso de mostrar publicidad sólo a los lectores que llegan a través de buscadores. Ahora tenemos una tarea nueva: no sólo tenemos que distribuir las ganancias de Adsense, sino que, además, queremos mostrar esa publicidad sólo a las búsquedas de Google.

El siguiente es un remedio manual, que he aprendido con mi escasa idea de PHP. Observando el funcionamiento de distintos ficheros .php y con el modo ensayo-error, he llegado a crear el siguiente método.

1. Creamos el archivo donde se incluirán los códigos Adsense de cada autor

Dentro de nuestra plantilla de Wordpress, creamos una carpeta llamada, por ejemplo, adsense. Dentro de esa carpeta, creamos el fichero adsense.php, que contendrá el siguiente código:

<?php  if ($post->post_author == 13) {
include (TEMPLATEPATH . '/adsense/andres.php'); }
elseif ($post->post_author == 15) {
include (TEMPLATEPATH . '/adsense/miguel.php'); }
elseif ($post->post_author == 17) {
include (TEMPLATEPATH . '/adsense/clara.php'); }
elseif ($post->post_author == 19) {
include (TEMPLATEPATH . '/adsense/elena.php'); }
elseif ($post->post_author == 20) {
include (TEMPLATEPATH . '/adsense/juan.php'); }
?>

Vemos que tenemos 5 autores. Cada autor en Wordpress tiene su propia ID y a cada uno le hemos creado su archivo .php donde incluiremos el código de Adsense de ese autor. Para agregar más autores, tendremos que agregar el código siguiente, después del cierre de corchete }

elseif ($post->post_author == 20) {
include (TEMPLATEPATH . '/adsense/juan.php'); }

Donde “20″ es el ID del autor, y juan.php es el archivo que contiene el código Adsense de ese autor.

2. Creando el archivo Adsense de cada autor

Como hemos visto antes, hemos pedido al fichero adsense.php que incluya un fichero .php según su autor (juan.php, elena.php, etc.). En cada fichero incluiremos el siguiente código:

<?php
if (preg_match('/q=|search/', $_SERVER['HTTP_REFERER']) ) {
print '<div class="adsense"><script type="text/javascript"><!--
google_ad_client = "pub-1654710281231454";
/* 250x250, creado 3/03/01 */
google_ad_slot = "4994361947";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>';
}
?>

Con ese código estamos diciendo que, si (if) la consulta llega de un buscador (q=|search/), se muestre (print) el código de Adsense de ese autor. Crearemos un fichero distinto para cada autor con el código que nos proporcione.

De esta forma, tendremos el directorio construido de esta forma:

  • plantilla/
    • adsense/
      • adsense.php
      • andres.php
      • clara.php
      • elena.php
      • miguel.php
      • juan.php

Añadimos tantos ficheros de autor como autores tengamos, lógicamente.

3. Colocamos el anuncio en el artículo

Ahora tenemos que llamar a ese archivo en la parte del archivo single.php que deseemos. En la mayoría de los casos, suele ser colocado debajo del título del artículo, quedando de la siguiente manera:

<h2><?php the_title(); ?></h2>
<!-- Adsense -->
<?php include_once(ABSPATH . 'wp-content/themes/plantilla/adsense/adsense.php'); ?>
<!-- END Adsense -->

Ahí estamos llamando al archivo adsense.php y éste, a su vez, llamará al archivo que contenga el código Adsense según el autor que haya escrito el artículo.

Muy seguramente, habrá una manera algo menos complicada, pero ésta, al menos, funciona, y es más cómoda para quienes quieran hacer las cosas a mano, que es como mejor se aprende.

2 respuestas

  1. matias dijo:

    una pregunta pero si no quisiera que solo fuera el adsense para visitas via google, osea para todas las visitas. que tendria que hacer?, desde ya muchas gracias.

  2. Hans dijo:

    Hola, Matías,

    para eso, deberías incluir tu código de Adsense en la parte de la plantilla (single.php, index.php, archive.php, etc.) que quieras, sin necesidad de ningún código PHP especial.

Deja tu respuesta