Una forma fácil de monetizar un blog es insertar publicidad como adsense (entre otros) que, aunque poquitos, generan algunos ingresos en función a las visitas y clicks que recibe nuestra página.

Aunque no hay unas reglas claras de cuales son las mejores zonas para insertar un anuncio (ya sabes, dónde recibirá más clicks o dónde tendrá más posibilidades), yo siempre me he decantado por colocar uno al inicio (casi inmediatamente al título de la entrada) y otro a mitad (podríamos colocar otro al final, pero depende del tamaño de tu entrada puede resultar demasiada publicidad.

En mi caso, mis entradas suelen ser de entre 700 y 1500 palabras, dependiendo del tema y lo inspirado que esté en ese momento. Lógicamente, también tengo entradas con poquitas palabras (unas 300).

Creando el hook, ¿Qué es un Hook?

Como sabes, WordPress funciona con un sistema de Hooks (o “ganchos”) que nos permiten inyectar, por así decirlo, filtros en las funciones nativas de WordPress.

Para que entiendas mejor el concepto, quiero que te plantees una situación en la que cada vez que se llame a la función the_content() se deba aplicar una tarea; en nuestro caso insertar el anuncio. Si echamos un ojo al loop (búcle) de WordPress vemos lo siguiente:

if (have_posts()) : ?>
   while (have_posts()) : the_post(); ?>
   <!-- Aquí hacemos varias cosas, como darle forma a la entrada ... -->
   <?php //Y llamamos a the_content()
   the_content();
   endwhile;
endif;

No hace falta que entiendas cada elemento de ese código, lo que quiero hacerte ver es que si nos limitamos a añadir el código de adsense aquí, sólo podremos añadirlo al principio o al final de la entrada, nunca en el medio.

Para poder insertarlo en el medio, hemos de crear un hook, para que cada vez que se haga una llamada a la función the_content() aplique un filtro.

La función en sí es esta:

add_filter( 'the_content', 'ad_mid_content' );
function ad_mid_content( $content ) {
if( !is_single() )
return $content;
 
$para_count = substr_count($content, "");
$para_After = floor($para_count/2);
//$para_After = 2; //Aquí puedes insertar el anuncio directamente en el párrafo 2, o en el que tú le indiques.
 
//Controlamos el número mínimo de palabras que tendrá que cumplir la entrada para aplicar esto
$word_count = str_word_count( strip_tags( $content ) );
//Acuérdate de modificar el 500 por otro número si quieres que sea diferente.
if($word_count < 500) return $content;
 
$content = explode ( "</p>", $content );
$new_content = '';
 
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $para_After ) {
$new_content .= '<div class="anuncio_titulo">';
$new_content .= '<!-- PEGA AQUI EL CODIGO DE ADSENSE, TAL Y COMO TE LO DA GOOGLE -->';
$new_content .= '';
}
$new_content .= $content[$i] . "";
}
return $new_content;
}

Analizando la función

Como siempre que publico algo, intento explicarte de dónde vienen las cosas. La función que te he dejado arriba funciona perfecta si la agregas a tu functions.php, pero lo bonito de todo esto es, por lo menos, entenderlo, ¿no?

El resto realmente es innecesario explicarlo. Sí me gustaría que entiendas lo que retorna la función, que es el contenido original con el añadido de nuestro anuncio en el medio. Esto, a través del add_filter, modificará nuestro contenido siempre que cumpla las condiciones explicadas arriba.

Si te es de utilidad, no dudes en compartirlo con tus amigos. Si tienes alguna duda, comenta y trataré de ayudarte.

14 respuestas a “Cómo añadir publicidad de adsense en mitad de la entrada de WordPress”

  1. Marcelo dice:

    Excelente tu explicación, aunque mucho no entienda ya que no soy programador y mis conocimientos en WordPress son básicos.

    Yo para meter publicidad en mi blog, debo utilizar condicionales ya que divido las ganancias de Adsense con otro autor en mi blog, cada uno obtiene el 100% de las ganancias de su entrada.

    Para dividir las ganancias he utilizado un condicional muy precario y con mucho esfuerzo

    $author_id=$post->post_author;
    if ($author_id == '1')
    include 'ad-336-marcelo.html';
    else
    {
    include 'ad-336-damian.html';
    }

    ese es el código que utilizo en el single.php.

    Mi pregunta es:

    Debo meter mi codigo en una función y para luego agregarlo a la linea $new_content? O que alternativa me recomiendas.

    Saludos y muy bueno el blog!

    • Darío BF dice:

      Hola Marcelo, la idea es exactamente la que comentas. Sustituye la línea $new_content .= '< ! -- PEGA AQUI EL CODIGO DE ADSENSE, TAL Y COMO TE LO DA GOOGLE -- >'; por tu código y debería funcionar.

      Saludos y gracias.

      • Marcelo dice:

        El problema mio es que no puedo volcar directamente el código de adsense en esa línea, debo utilizar si o si el condicional para que WordPress muestre la plucidad correspondiente al autor del post. Debo crear una funcion y llamarla en esa línea?

  2. Marcelo dice:

    El código no me resulto, probe utilizar tu código solamente y no me aparece nada en la entrada. Debe ser algun problema de mi theme?

    • Darío BF dice:

      El código funciona, lo puedes ver en este propio blog. En teoría basta con sustituir tu función por la línea comentada donde yo sugiero introducir el código que te da adsense.

  3. Diego dice:

    Hola Darío, gracias por el aporte, es de gran ayuda.
    He implementado tu código tal cómo comentas, pero hay un problema, no me muestra el anuncio en medio de la entrada, me lo muestra justo debajo del título…
    He puesto el segundo código que pones, el grande, no se lo que puede estar mal o si me puedes hechar una mano para resolverlo.
    Gracias de antemano y un saludo!

    • Darío BF dice:

      Hola Diego, el código que debes implementar en tu functions.php es el último, el grande.

      Eso inyectará el código en mitad de la entrada.

      Problemas que puedes tener: Si tu theme (plantilla) no utiliza la función the_content() para mostrar el contenido (usa una propia), no funcionará.

      Revisa que tu plantilla utiliza la función mencionada.

      Saludos.

      • Diego dice:

        He hecho una búsqueda en Functions.php y me aparece 2 veces The_Content, una en tu códgo y otra en el código del tema, en una función que para redimensionar imágenes.
        Sin Embargo, justo debajo del cuadro para escribir código, Donde viene la lista de todas las funciones no aparece the_content().
        Cómo ves no estoy muy puesto en esto de los códigos y las funciones, no se si con estos datos podrás comprobar si mi tema incluye esta función o no…

  4. GUSTAVO dice:

    Muy interesante, gracias por tu aporte, una consulta como haría si quiero insertar un anuncio de adsense o cualquier texto encima del último parrafo, espero me puedas ayudar.

  5. Muchas gracias, me fue de gran ayuda, Saludos

  6. Lo acabo de probar, con unas pequeñas modificaciones mia y funciono de maravilla, Gracias por el aporte.

  7. Llevo dias buscándolo, es genial sobretodo si no te lo has planteado antes y te toca editar todos los posts para insertar la publicidad.

    Saludos
    Francisco

  8. chuchu153 dice:

    buena información amigo, tengo una pregunta,como haría si quiero que esa publicidad no aparezca en cierta categoría?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *