WordPress eliminando etiquetas <p>?

14 mar 2014, 15:34:43
Vistas: 27.2K
Votos: 7

Ya me había encontrado con un caso donde WordPress agregaba etiquetas <p>. Sin embargo, ahora estoy lidiando con la situación opuesta. Cuando agrego shortcodes [] dentro de etiquetas <p>, WordPress automáticamente elimina las etiquetas <p>.

<p>[anyshortcode]Hola Mundo[/anyshortcode]</p>

Se convierte en:

Hola Mundo

Agregar dir="ltr" a las etiquetas <p> parece solucionar el problema, ¿quizás hay una manera de agregarlo programáticamente a todas las etiquetas <p>?

¿Alguna idea sobre cómo solucionar esto?

2
Comentarios

Puedes usar un plugin avanzado de tinymce que sea más potente y también haga que funcionen los párrafos.

Foxsk8 Foxsk8
14 mar 2014 23:21:50

usa 'wpautop'. Ej: '<?php echo wpautop('[anyshortcode]'); ?>'

user2584538 user2584538
23 mar 2016 08:17:54
Todas las respuestas a la pregunta 5
0

Esto es básicamente lo que Foxsk8 mencionó en un comentario, así que el crédito debería ir para él, pero estas instrucciones adicionales serán útiles. El plugin de WordPress llamado TinyMCE Advanced resolverá tu problema.

Este plugin incluye una opción dentro de Ajustes > TinyMCE Advanced que solucionará el problema de tus etiquetas <p> que desaparecen. Marca la casilla etiquetada como Dejar de eliminar las etiquetas <p> y <br /> al guardar y mostrarlas en el editor de Texto y tus etiquetas <p> se conservarán.

13 dic 2014 20:47:56
0

TinyMCE está programado para facilitar la edición (lo cual para los expertos en HTML a menudo no es el caso). Por defecto, no debería aceptar etiquetas <p> alrededor de [BLOQUES]. Esto se debe a que los "[]" se utilizan para shortcodes no solo en WP sino en una gran cantidad de CMS basados en PHP. Los shortcodes deben tener el envoltorio de contenido apropiado.

Lo que significa que la solución es agregar las etiquetas <p> en el código de tu shortcode para que tu contenido esté envuelto de la manera que deseas.

23 sept 2014 21:16:36
0

Como complemento a Foxsk8 y E. Serrano. Si la publicación contiene <p> alrededor de los shortcodes, WordPress aún los eliminará. Esto ocurre en el filtro shortcode_unautop que se añade en '\wp-includes\default-filters.php'. Este filtro asegura que los shortcodes no estén envueltos en <p>...</p>.

Por lo tanto, necesitamos eliminarlos:

remove_filter( 'the_content', 'shortcode_unautop' );
3 nov 2019 21:27:09
1

Puedes agregar el siguiente código en tu archivo function.php

function content_formatter($content){

    $new_content = '';
    $pattern_full = '{(\[raw\].*?\[/raw\])}is';
    $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

    foreach ($pieces as $piece) {
            if (preg_match($pattern_contents, $piece, $matches)) {
                    $new_content .= $matches[1];
            } else {
                    $new_content .= wptexturize(wpautop($piece));
            }
    }

    $array = array(
            '<p>[' => '[',
            ']</p>' => ']',
            ']<br />' => ']'
    );

    $new_content = strtr($new_content, $array);

    return $new_content;

}

Ahora llama a esta función donde sea necesario, por ejemplo:

<?php echo content_formatter( get_field('nombre_del_campo') ); ?>
23 may 2016 09:45:58
Comentarios

Un poco de explicación estaría bien en lugar de solo publicar código.

bravokeyl bravokeyl
23 may 2016 10:06:04
1
-2

Añade esto a tu archivo functions.php dentro de la carpeta de tu tema.

remove_filter( 'the_content', 'wpautop' );
14 mar 2014 20:54:31
Comentarios

También puedes ver esto en otros lugares. No funciona para mí.

Garavani Garavani
18 oct 2023 18:32:51