Buffer de salida PHP en WordPress

Cuando desarrollamos un plugin o un tema de WordPress para terceros o cuando un cliente nos pide una sección o bloque que muestre cierto contenido estático o dinámico, entonces, utilizamos shortcodes como solución a lo que nos están pidiendo . 

Estos shortcodes nos permiten empaquetar cierta funcionalidad con su estructura HTML y mediante una simple declaración entre corchetes [nombre-de-mi-shortcode], podemos obtener un resultado y colocarlo en distintas partes de nuestro sitio. Los shortcodes son una herramienta muy potente que tiene WordPress y que te sacará de muchos apuros.

Una de las ventajas de encapsular código es el hecho de que si se modifica la funcionalidad o la estructura del shortcode, entonces se modificaran todas aquellas secciones de tu sitio donde esté funcionando el shortcode personalizado. 

Si tenemos una plantilla HTML / PHP compleja dentro de un shortcode, en la que necesitamos dar salida a ciertos datos mediante la función «echo» de PHP, estas nos pueden dar problemas de edición y visualización. WordPress por sistema interpreta todo el código pero te encontrarás con partes que visualmente no se muestren. 

Para que WordPress interprete todo el código de un shortcode, usaremos el buffer de salida de PHP (ob_start), que es muy útil y su misión es capturar, almacenar y modificar todas las salidas «echo» antes de que se ejecute el código del shortcode, como si fuese una variable y luego devolverlo a WordPress para posteriormente ser procesado.

Y ahora, ¿Cómo creamos un buffer?

➡ El bufer de salida empieza con ob_start(). 

➡ Introducimos el marcado HTML para generar la estructura que vamos a mostrar. 

➡ Con ob_get_content() recuperamos el contenido del bufer, el cual podemos mostrar con un simple «echo» o almacenarlo en una variable.

➡ ob_clean() se utiliza para borrar el bufer.

➡ ob_end_clean() para cerrar el bufer una vez hayamos terminado con él.

➡ ob_get_clean(), esta función hace tres cosas, obtiene el contenido del bufer, limpia el bufer y desactiva el almacenamiento en bufer.

Aquí te dejo un ejemplo base de cómo lo uso yo en mis desarrollos.



*Lo que tienes que hacer para que te funcione a ti, es cambiar el nombre del shortcode por el tuyo propio.

*También tienes que cambiar el nombre de la función y ponerle siempre un prefijo.

Sobre el autor