Añadir elementos entre los párrafos de un post en WordPress

añadir contenido entre parrafos wordpress

 

Cómo añadir anuncios u otros elementos entre los párrafos de un post en WordPress.

 

En algunas ocasiones necesitamos añadir anuncios o algún otro elemento (imágenes, textos, shortcodes…) entre los párrafos de nuestros posts cuando escribimos en WordPress.

Existen decenas de plugins que pueden realizar esta tarea, pero yo prefiero hacerlo con mi propio código para tener un control total de la tarea.

Para empezar, y lo más importante, es crearnos nuestro tema hijo ya que tenemos que añadir el código en el potente archivo functions.php. Aquí te explico cómo crearte tu tema hijo.

Una vez lo tienes creado, simplemente debes acceder al archivo functions.php y añadir las siguientes lineas al final.

 

En este ejemplo añadiremos 1 sólo contenido o elemento en una posicion concreta de nuestro post, por ejemplo, tras el párrafo número 9.

 

//Insertar ads o contenido propio tras el noveno párrafo del contenido principal.

function insert_post_ads( $content ) {
    $ad_code = 'Aquí el código de tu anuncio o contenido destacado o imagen ...';
 
    if ( is_single() && ! is_admin() ) {
        return insert_ads_after_paragraph( $ad_code, 9, $content );
    }
    return $content;
}
add_filter( 'the_content', 'insert_post_ads' );
 

// Función para insertar el contenido
function insert_ads_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
 
    foreach ($paragraphs as $index => $paragraph) {
        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }
 
        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
        }
    }
    return implode( '', $paragraphs );
}

 

Actuaremos sobre el filter the_content. La función insert_post_ads() guarda en una variable el código del contenido que queramos mostrar. Comprobaremos que sólo vamos a actuar en el caso que estemos en single.php (is_single()), y sólo en la parte pública (!is_admin()).

Llamaremos a la función insert_ads_after_paragraph() que es la que se encarga de insertar la cadena que contiene la información que queremos mostrar y el número de párrafo tras el que la vamos a mostrar.

Cómo funciona? Simple:

Partimos o dividimos todos los párrafos de nuestro contenido the_content en un array, utilizando la función explode de PHP y marcando el «corte» a través de la cadena de texto </p>, etiqueta HTML que indica el final de un párrafo.

  • Recorremos todos los párrafos y concatenando de nuevo la etiqueta de cierre </p>.
  • En el caso que se cumpla la condición de que el número de párrafo que hemos pasado a la función insert_ads_after_paragraph() (en este ejemplo: 9) sea igual a $index + 1  concatenamos la cadena de texto que contiene nuestro código.

Una vez finalizado el bucle retornaremos el contenido final y podrás ver ese elemento en tu post.

 

Ahora añadiremos nuestro contenido o elemento cada, por ejemplo, 9 párrafos.

Éste código va muy bien para post muy largos en los que queremos añadir varios anuncios intercalados.

El código es muy similar. La función para ir insertando el contenido es exactamente la misma. La diferencia está en la forma de contar párrafos e ir incluyendo contenido. Aquí dejo el código.

 

//Insertar ads o contenido propio cada 8 párrafos del contenido principal.

function insert_post_ads( $content ) {
    $ad_code = 'Aquí el código de tu anuncio o contenido destacado';

if ( is_single() && ! is_admin() ) {
$closing_p = '</p>';
$total = explode( $closing_p, $content );
$all_parraf = count($total);

//añadimos un anuncio cada 8 parrafos
$each = 8;

$merge =  round($all_parraf /$each)-1;
$pila = [];
for($i=1; $i<=$merge;$i++){
	array_push($pila,$i*$each );
}

foreach ($pila as $parrafo) {
	$content= insert_ads_after_paragraph( $ad_code, $parrafo, $content ); 
}
        return $content;       
    }
    return $content;
}

add_filter( 'the_content', 'insert_post_ads' );
 


// Función para insertar el contenido

function insert_ads_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
 
    foreach ($paragraphs as $index => $paragraph) {
        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }
 
        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
       }
    }
    return implode( '', $paragraphs );
}

 

Puedes usar cualquiera de estos 2 códigos simplemente copiándolos en tu archivo functions.php.

Compartir esta entrada.

Deja una respuesta

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

CAPTCHA ImageChange Image