Como crear un plugin de WordPress que agregue contenido a todos los artículos



Como abras visto en muchos blogs, al final de cada artículo hay alguna información adicional como la biografía del autor, algún anuncio o una invitación a suscribirse a una lista de correos.

En un blog pequeño esa información podría agregarse manualmente en cada artículo, pero eso consumiría valioso tiempo. La mejor forma de lograr esto es creando un plugin que haga el trabajo por ti. En este articulo te mostraré como hacerlo:

Si nunca antes has creado un plugin de WordPress te recomiendo leer este articulo sobre como crear un plugin para WordPress.

Voy a mostrarte como crear un plugin que agregue un anuncio al final de cada artículo en tu blog. Ahora crea la estructura de un plugin de WordPress y agregas este código:

<?php
/*
Plugin Name: wp adsense
Plugin URI: https://www.codigonaranja.com
Description: Agrega un anuncio al final de cada post
Version: 1.0
Author: Luis Cruz
Author URI: https://www.codigonaranja.com
License: GPLv2
*/

//Crear un filtro para modificar el contenido del articulo....
add_filter( 'the_content', 'cn_agregar_anuncio' );

function cn_agregar_anuncio ( $the_content ) {

    //Creamos una variable que contenga todo el contenido
    //del articulo
    $articulo = $the_content;

    // Al final del articulo agregar el codigo del anuncio....
    $articulo .= '<div class="ads"> *** insertar codigo de anuncio *** </div>';

    // siempre debe regresar el contenido que se desea mostrar
    return $articulo;
}

Para poder modificar el contenido de cada artículo, debemos usar un filtro y en este caso podemos usar el filtro llamado the_content. Este filtro envía como parámetro el código HTML del contenido que esta por desplegarse. Luego solo tienes que agregar el código HTML necesario para mostrar tus anuncios y haces que tu función regrese el código HTML modificado y eso será lo que tus visitantes vean.

Para probar el código anterior recuerda que debes activar el plugin desde la página de administración de WorpPress.

No solo artículos…

El código anterior se ejecutaría para cualquiera de tus páginas web, incluyendo la página principal, búsquedas artículos, páginas, etc.

Para hacer que los anuncios solo se desplieguen en los artículos o posts podemos usar la función is_single() de WordPress, esta función regresa True si el contenido a desplegar es un artículo. El código final quedaría de esta forma:

<?php
/*
Plugin Name: wp adsense
Plugin URI: https://www.codigonaranja.com
Description: Agrega un anuncio al final de cada post
Version: 1.0
Author: Luis Cruz
Author URI: https://www.codigonaranja.com
License: GPLv2
*/

//Crear un filtro para modificar el contenido del articulo....
add_filter( 'the_content', 'cn_agregar_anuncio' );

function cn_agregar_anuncio ( $the_content ) {


    //Creamos una variable que contenga todo el contenido
    //del articulo
    $articulo = $the_content;

    //Solo inyectar el anuncio en los articulos
    if (is_single() && is_main_query() && in_the_loop()){
      // Al final del articulo agregar el codigo del anuncio....
      $articulo .= '<div class="ads"> *** insertar codigo de anuncio *** </div>';
    }

    // siempre debe regresar el contenido que se desea mostrar
    return $articulo;
}

Como habrás notado también agregue estas funciones a la condición: is_main_query() in_the_loop() esto es importante para asegurarte que estas modificando solo el contenido principal y no algún articulo o segmento del artículo mostrado en algún Widget o Footer en tu sitio web.

Otras funciones que podrían interesarte

Ya has visto la utilidad de la función is_single(), pero también hay otras que podría serte de utilidad:

is_page()

Regresa True cuando el contenido a desplegar es una página. WordPress tiene dos formas de generar contenido Artículos (o Entradas o Post) y Páginas.

is_singular()

Regresa True cuando el contenido a desplegar es una página o un articulo (cualquiera de las dos)

is_home()

Regresa True cuando sé esta desplegando el contenido de la página de inicio.

Deja una respuesta

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