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.