Enrique J. Ros

Añadir contenido automáticamente en cada entrada

Es habitual, especialmente en los blogs profesionales o ligados a una tienda online, querer incluir contenido promocional en cada una de las entradas. Pero no hablo de banners (eso no funciona en términos de marketing) sino de contenido integrado con la propia entrada, pero «animando» al lector a realizar alguna acción adicional. Lo que se conoce como una llamada a la acción.

Hacer esto de forma manual en cada una de las entradas que publiquemos es una acción repetitiva y molesta, que además podemos olvidar con frecuencia. En estos casos siempre es mejor automatizarlo, especialmente si ese contenido es siempre el mismo. Así que vamos a ver cómo añadir contenido a cada entrada de forma automática en WordPress.

Añadir contenido automático en WordPress

WordPress permite hacer que en cada entrada (no sólo en las futuras, sino también en las que ya están publicadas) se añada de forma dinámica un contenido gracias a un filtro llamado the_content.

Para entendernos, el proceso interno sería el siguiente:

  1. El contenido correspondiente a la entrada es solicitado a la base de datos
  2. Ese contenido no se entrega directamente, sino que se comprueba si hay una llamada al filtro the_content (pueden haber múltiples llamadas)
  3. Si hay alguna llamada a ese filtro, WordPress le entrega el contenido y espera que la función asociada se lo devuelva (normalmente modificado, que para eso se hace)
  4. Una vez pasado por todas las funciones que se han «enganchado» al filtro the_content, WordPress muestra lo que le ha llegado devuelto, sea lo que sea
  5. Es decir, para explicarlo de una forma más sencilla: se puede hacer por ejemplo una función que cambie todas las apariciones de la palabra «nuestroemail» por una dirección de email.

    Si enganchamos esta función a the_content WordPress le entregará el contenido que hay en la base de datos (o el que hayan devuelto otras funciones enganchadas también a este filtro), nuestra función hará el cambio pertinente sustituyendo todas las apariciones de la palabra en cuestión, y después devolverá el resultado a su curso normal, para seguir pasando otros filtros o ya para ser mostrado al usuario.

    Ventajas de filtrar el contenido

    Si te das cuenta, el contenido no cambia nunca en la base de datos, sino que se modifica «al vuelo». Es decir, mañana podemos eliminar ese filtro y evitar de un plumazo que esa modificación se aplique, sin tener que ir modificando entrada por entrada.

    Igualmente, si cambiamos nuestra dirección de correo electrónico (por continuar con el ejemplo anterior) modificarla en el filtro y automáticamente todo el contenido empieza a mostrar la nueva. Es decir, modificar la función que realiza los cambios en el contenido hace que éstos se apliquen de forma inmediata a todos los contenidos afectados.

    Por último, gracias a las funciones condicionales de WordPress y con unos conocimientos básicos de PHP y de estas funciones, se puede hacer que este filtro se aplique de forma condicional: sólo si la entrada contiene determinada etiqueta, añadir diferente contenido extra en función de la categoría, afectar sólo a entradas, sólo a páginas, sólo a productos, a todos, etc…

    Añadir contenidos de forma automática

    Vista la teoría, vamos a ver cómo podemos aplicar la forma básica (es decir, añadir un contenido extra, sin entrar en condicionales o en realizar cambios) de dos formas: por código, para los más atrevidos (como de costumbre, esta opción es siempre más flexible y potente) o mediante un plugin.

    Añadir contenido a las entradas usando the_content

    Como decía al principio, se trata simplemente de recibir enganchar nuestra función al filtro, recibir en ella el contenido, modificarlo (añadiendo nuestro propio contenido extra) y devolverlo ya modificado al flujo de datos.

    O sea, esto:

    add_filter ('the_content', function ($contenido) {
          $micontenido = '

    Aquí añado el contenido que quiera agregar al final, en HTML

    '; return $contenido . $micontenido; });

    Por supuesto, siempre debemos devolver el contenido modificado mediante un return, si no WordPress no recibirá nada y, al activar el filtro, WordPress no tendrá nada que mostrar: entradas, páginas, productos y cualquier otro tipo de contenido estarán vacíos.

    Como ves la función es muy sencilla. Igualmente podemos añadir cualquier contenido extra al principio cambiando la concatenación en el return:

    return $micontenido . $contenido;
    

    Esto puede ser muy útil para, por ejemplo, añadir los botones de redes sociales en cada contenido (y, de hecho, es así como lo hacen la mayoría de los plugins). Si quisiéramos añadir el botón +1 al principio de cada contenido podríamos hacer:

    add_filter ('the_content', function ($contenido) {
          $masuno = '';
          return $masuno . $contenido;
    });
    

    Como decía anteriormente, establecido así un filtro se aplicaría a todos los contenidos (entradas, páginas, productos de WooCommerce (en este caso se aplica a la descripción del producto) o cualquier otro custom post type que tengas establecido en tu instalación. Para limitar esto, tienes a tu disposición el maravilloso mundo de los condicionales de WordPress.

    Añadir contenido al final de las entradas con un plugin

    Como para casi todo en WordPress, hay también un plugin que te permite hacerlo sin necesidad de ningún conocimiento. En este caso se trata de Add Widget After Content (AWAC para los amigos) que, como habrás podido adivinar por el nombre, añade un nuevo área de widgets que se mostrará después del contenido.

    El funcionamiento es muy sencillo: añadir widgets (Apariencia > Widgets > After Content) con lo que quieras mostrar tras los contenidos. El inconveniente es que, como decía en el apartado anterior, estos widgets se mostrarán después de todos los contenidos: páginas, entradas, productos…

    Aunque eso se puede subsanar fácilmente con otro plugin, JP Widget Visibility, que te permitirá seleccionar en qué contenidos quieres que se muestre de forma condicional. Si estás usando Jetpack ya incluye un módulo que hace esto mismo, así que no necesitarás instalar este segundo plugin.

    Vídeo: Plugin para añadir widgets al final del contenido

    Vamos a ver el funcionamiento y la configuración en este vídeo:

Salir de la versión móvil