eliminar etiquetas <p> de the_content

9 ago 2013, 01:15:45
Vistas: 63.9K
Votos: 8

Tengo un formato de entrada de tipo Imagen y estoy teniendo un problema donde la imagen está siendo envuelta por una etiqueta <p>. Quiero deshacerme de esa etiqueta (específicamente en la versión de single.php) para esos tipos de entradas.

¿Cómo puedo acceder al formateo en un tema y eliminar las etiquetas <p>, o crear cualquier formato que desee para la salida de este tipo de entrada, sin afectar a las entradas de un formato diferente?

3
Comentarios

¿Por qué es importante la etiqueta <p>? Supongo que el problema básico es solo el estilo. En ese caso, imagino que una solución con CSS sería la más fácil.

s_ha_dum s_ha_dum
9 ago 2013 01:31:24

El <p> es tu amigo. Realmente deberías aprender a usarlo.

westondeboer westondeboer
9 ago 2013 03:14:49

ambos comentarios son simplemente malos. HTML importa por varias razones, pero en este caso porque el usuario está preguntando específicamente por una solución que no los use.

albert albert
18 dic 2018 18:41:36
Todas las respuestas a la pregunta 12
0

Si este tipo de publicación se llama "imagen", puedes crear una plantilla individual para manejar la visualización solo del tipo de publicación de imagen.

Simplemente copia tu archivo 'single.php' y renombra la copia como 'single-image.php'. Ahora puedes controlar solo las publicaciones de imágenes. Para eliminar etiquetas, me gusta usar la función strip_tags(). Si imprimes el contenido de la publicación con the_content() ya se aplica el filtro de contenido, envolviendo las líneas en etiquetas <p>.

Aquí tienes un ejemplo de cómo podrías obtener el contenido de tu imagen sin las etiquetas:

$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<br><a>'); //reemplaza <br> y <a> con las etiquetas que quieras conservar después del strip
echo $stripped;

¡Espero que esto ayude!

9 ago 2013 01:29:38
0

WordPress añade automáticamente las etiquetas <p> al contenido. Por lo tanto, estas se muestran al cargar el contenido. Esto ocurre debido al filtro wpautop. Así que eliminaremos este filtro únicamente para el tipo de entrada image. Puedes gestionar esto añadiendo el siguiente código en el archivo functions.php.

// Añadir el filtro para gestionar las etiquetas p
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );

function wti_remove_autop_for_image( $content )
{
     global $post;

     // Verificar si es una entrada individual y del tipo 'image', luego eliminar el filtro
     if ( is_single() && $post->post_type == 'image' )
          remove_filter('the_content', 'wpautop');

     return $content;
}

is_single() verifica si se está mostrando una entrada individual.

7 dic 2013 20:18:59
0

Por defecto, WordPress añade etiquetas de párrafo

a las descripciones de categorías. Detén esto añadiendo lo siguiente a tu archivo functions.php

// Eliminar etiquetas p de la descripción de categoría
remove_filter('term_description','wpautop');

Sencillo y fácil (sin código).

Gracias

14 nov 2018 18:20:23
0

Puedes usar get_the_content() en lugar de the_content(). Esto puede resolver tu problema y otra solución es la misma que describió @Chittaranjan

5 jun 2015 14:27:35
0

Simplemente añade la siguiente línea de código en el archivo functions.php de tu tema

Para el contenido:

remove_filter( 'the_content', 'wpautop' );

Para el extracto:

remove_filter( 'the_excerpt', 'wpautop' );

Más información: https://codex.wordpress.org/Function_Reference/wpautop

12 ene 2017 09:52:20
1

Puedes utilizar clases específicas para publicaciones como single-post o single-format-standard y ocultarlas según lo necesites solo en una página individual, para que no haya conflicto con otras partes del sitio web.

Código CSS de ejemplo*

.single-post .entry-content p:empty { display: none; }

Código CSS de ejemplo para formato de publicación específico de Imagen

.single-format-image .entry-content p:empty { display: none; }
12 ene 2017 09:23:52
Comentarios

¡Excelente sugerencia! No sabía que :empty existía.

Kenton de Jong Kenton de Jong
10 jul 2020 20:06:42
0

Para eliminar la etiqueta p del contenido puedes usar el siguiente código

<?php remove_filter ('the_content', 'wpautop'); ?>
5 jun 2015 14:34:55
0

Otra forma de codificarlo basada en la solución de @chittaranjan

add_filter( 'the_content', 'remove_autop_for_image', 0 );

function remove_autop_for_image( $content ) {
     global $post;

     if ( is_singular('image'))
          remove_filter('the_content', 'wpautop');

     return $content;
}
5 jun 2015 16:41:11
1

coloca este código en "style.css" del "Tema hijo activo"

p:empty {
  display: none;
}
12 ene 2017 08:57:46
Comentarios

+1 p:empty { display: none; } @Parthavi-Patel. Es bueno ocultarlo cuando se encuentra un elemento vacío, ya que eliminar las funciones nativas es una mala práctica aunque tengamos la opción.

Maqk Maqk
12 ene 2017 09:04:40
0

Si deseas eliminar el filtro de una página o entrada en particular, puedes llamar esto:

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
26 sept 2017 22:55:55
0
-1

aunque la consulta ya ha sido respondida, publico lo siguiente como referencia adicional.

remove_filter ('the_exceprt', 'wpautop');

remove_filter ('the_content', 'wpautop');

remove_filter('term_description','wpautop');

Fuente

27 dic 2017 11:49:37
1
-1

Con wp_strip_all_tags puedes eliminar todas las etiquetas HTML incluyendo p, div, etc. https://developer.wordpress.org/reference/functions/wp_strip_all_tags/

wp_strip_all_tags(category_description());

17 dic 2021 09:00:05
Comentarios

La pregunta es sobre cómo evitar que WordPress genere estas etiquetas automáticamente, no sobre eliminar etiquetas de una cadena en la base de datos.

Rup Rup
19 dic 2021 22:07:46