Seleccionar página

Eliminar párrafos vacíos del contenido de los Post en WordPress

por | Abr 13, 2017 | Wordpress

Índice de contenidos

Eliminar párrafos vacíos que se insertan en la edición de los post en WordPress

Con un par de funciones PHP podemos eliminar párrafos vacíos que se insertan en la edición de los post en WordPress.

Probablemente te suene familiar esta situación. Cuando editamos un post vamos corrigiendo y realizando mejoras sobre la edición. Esto provoca que insertemos párrafos vacíos en el contenido de los post. En principio, no es ningún problema pero puede afectar al diseño de nuestro sitio. Los párrafos vacíos finales de los contenidos de los post a menudo crean espacios demasiado grandes entre los elementos de información de nuestra página.

No tiene mucho sentido ir post por post, abrir la ventana de edición y borrar uno por uno cada párrafo vacío. Lo más útil es adjuntar una función en los archivos .php que limpien el contenido antes de mostrarlo por pantalla.

Código PHP para eliminar HTML <p>&nsbp;</p> del final del content de un post

Código PHP eliminar párrafos finales HTML Las siguientes líneas de código las copiaremos y pegaremos en el archivo single.php y en todos los archivos de WordPress (páginas…) donde queramos limpiar los párrafos vacíos del contenido.

El código sirve para quitar la entidad <p>&nsbp;</p> pero realizando modificaciones en el mismo puedes conseguir limpiar otras etiquetas. 

Lo ideal es que trabajes sobre un tema hijo. Que modifiques el archivo dentro del tema hijo para no perder los cambios con las actualizaciones del tema. 

Editar archivo single.php

El archivo single.php lo encontraremos siguiendo la ruta:

wp-content/themes/tutema/single.php

abre el archivo con tu editor y busca la función PHP the_content();

Vamos a sustituir the_content(); por las siguientes líneas de código PHP:

$contenido = get_the_content();
$contenido = apply_filters('the_content', $contenido);
echo str_replace('<p>&nbsp;</p>',' ',$contenido);

Guarda los cambios en tu archivo.

Explicación código PHP para eliminar <p> vacíos

Lo primero que hemos hecho es guardar todo el contenido del post en una variable llamada $contenido.

Si te fijas hemos empleado get_the_content() y no the_content() para cargar la variable. La explicación es la siguiente: the_content() lo que hace es un «echo» del contenido de un post, es decir, se utiliza para escribir sobre pantalla y no sirve para almacenar contenido en variables. Por el contrario get_the_content() obtiene el contenido del post y lo almacena en la variable. La función get_the_content() tiene un problema: el contenido pierde las etiquetas HTML. Para solucionarlo debemos aplicar un filtro.

En la siguiente línea aplicamos un filtro sobre la variable $contenido. Con este filtro recuperamos los párrafos de las líneas. Es necesario aplicar este filtro sino nuestra función principal no tendrá nada que limpiar.

Por último con str_replace reemplazamos todos los párrafos vacíos (<p>&nsbp;</p>) por ‘  ‘ del contenido del post. Esta función se utiliza para reemplazar un string por otro string dentro de una cadena. Si necesitas modificar un string con expresiones regulares puedes emplear la siguiente función:

 

¿Quieres aprender a programar en Java? 
Tutorial gratuito de Java para principiantes:  https://guru99.es/java-tutorial/

 

Variaciones del código

Se puede realizar la búsqueda y reemplazo de caracteres dentro de un string utilizando expresiones regulares. Para utilizar expresiones regulares empleamos la función: preg_replace

Un ejemplo del uso de preg_replace para quitar todos los espacios innecesarios dentro de una cadena:

<?php
$cadena = 'cadena   varios   espacios';
$cadena = preg_replace('/\s\s+/', ' ', $cadena);
// El resultado 'cadena varios espacios'
echo $cadena;
?>

0 comentarios

Enviar un comentario

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