Cómo añadir publicidad de adsense en mitad de la entrada de WordPress

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.

¡MANTENME INFORMADO!

¡Gracias por tu interés en estar informado del próximo lanzamiento de mis cursos! 😎

¡No hago spam! Lee la política de privacidad para tener más información.

16 comentarios en “Cómo añadir publicidad de adsense en mitad de la entrada de WordPress

  1. 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!

    1. 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.

      1. 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. 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?

    1. 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. 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!

    1. 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.

      1. 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. 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. 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

  6. Buen articulo macho!

    el unico defecto que le veo es que no se coloca totalmente en el medio, se coloca digamos en el 1/4, de todas formas es estupendo justo lo que buscaba.

    Un saludo!

Deja una respuesta

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

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.