eliminar párrafos vacíos de the_content?
-
-
Vea lapregunta: [Estoy usando unfiltroparaeliminar las
etiquetas de ajuste automático] (http://wordpress.stackexchange.com/questions/7846)
See the question: [I'm using a filter to remove thetags auto wrap](http://wordpress.stackexchange.com/questions/7846)
- 0
- 2011-04-03
- Chris_O
-
Intenteejecutar sufiltro antes de que `wpautop` lo haga,porejemplo.`add_filter ('el_contenido','qanda',7);` ..Try running your filter before `wpautop` does it's thing, eg. `add_filter('the_content', 'qanda', 7 );`..
- 1
- 2011-04-03
- t31os
-
@t31os: ¿Puedemover su comentario a una respuestapara quepodamos votar?@t31os: Can you move your comment to an answer so we can vote on it?
- 0
- 2011-04-06
- Jan Fabry
-
10 respuestas
- votos
-
- 2011-04-03
WordPressinsertará automáticamente lasetiquetas
<p>
y</p>
que separan los saltos de contenido dentro de unapublicación opágina.Si,por alguna razón,desea onecesitaeliminarlos,puede utilizar cualquiera de los siguientesfragmentos de código.Para deshabilitar completamenteelfiltro wpautop,puede usar:
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'removeEmptyParagraphs',99999);
WordPress will automatically insert
<p>
and</p>
tags which separate content breaks within a post or page. If, for some reason, you want or need to remove these, you can use either of the following code snippets.To completely disable the wpautop filter, you can use:
remove_filter('the_content', 'wpautop');
If you still want this to function try adding a later priority value to your filter something like:
add_filter('the_content', 'removeEmptyParagraphs',99999);
-
¡gracias!Sé que WordPressinserta automáticamenteetiquetasp.Sinembargo,ocurren algunos casosen los que hayetiquetas
yelformato automático.¡No quieroningunap vacía!
thank you! I know wordpress automatically inserts p tags. However there happen some cases where there are just empty tags somewhere in my content (when i inspect it with some tool)... that happens when doing a lot of removal and editing of posts. I just don't want to have empty paragraphs in my content, that's all. I do need paragraphs, just not empty ones. The 99999 doesn't make a difference. Just doesn't work. the wpautop filter is not what I want. It prevents all's and autoformatting. I just don't want any empty p's!
- 2
- 2011-04-03
- mathiregister
-
Actualicémi publicaciónpara que veas lo que quiero decir.Hice unafunción que yafiltrael contenido.inserta divs yparece que wordpressestáinsertandoi updated my post so you see what I mean! i did a function that already filters the content. it inserts divs and it seemes wordpress is inserting before and after it, i just don't get it. any ideas?
- 0
- 2011-04-03
- mathiregister
-
- 2012-01-02
Tuveelmismoproblema quetú.Acabo de hacer una ... digamos ... una soluciónnomuybonita,perofunciona y hasta ahoraes la única solución quetengo.Agregué unapequeña línea de JavaScript.NecesitajQuery,peroestoy seguro de quepuede resolverlo sin él.
Esteesmi pequeño JS:
$('p:empty').remove();
¡Estome funciona!
I had the same problem you have. I just did a... let's say... not very beautiful solution, but it works and so far it's the only solution I have. I added a little JavaScript line. It needs jQuery, but I'm sure you can figure it out without.
This is my tiny JS:
$('p:empty').remove();
This works for me!
-
¡Oh,noesese unpequeñonúmero dulce!Graciasporel consejo,funcionaparamí y,en caso de que alguienmás sepregunte cómo usarlo,simplemente colóqueloen el archivo JSpersonalizado de sutema.oh aint that a sweet little number! Thanks for the tip - it works for me and in case anyone else wondered how to use it, just put it in your theme's custom JS file.
- 0
- 2012-09-06
- Sol
-
@D_N Usar CSSpara ocultaretiquetas depárrafo vacías solofuncionapara `
\n
`.@D_N Using CSS to hide empty Paragraph tags only works for `` but doesn't work for `\n
`.- 0
- 2017-04-21
- Michael Ecklund
-
- 2015-09-30
Simplemente use CSS
p:empty { display: none; }
Simply use CSS
p:empty { display: none; }
-
Agrega unaexplicación atu respuesta.Please add an explanation to your answer
- 0
- 2015-09-30
- Pieter Goosen
-
@PieterGoosen ya seexplicapor símismo@PieterGoosen it is already self-explanatory
- 4
- 2015-10-01
- at least three characters
-
Si solo deseaevitarmostrarlos confines deespaciado,estofuncionabien hasta IE9.http://caniuse.com/#feat=css-sel3 y https://developer.mozilla.org/en-US/docs/Web/CSS/%3Aemptypara obtenermásinformación.If you just want to avoid displaying them for spacing purposes, this works well down to IE9. http://caniuse.com/#feat=css-sel3 and https://developer.mozilla.org/en-US/docs/Web/CSS/%3Aempty for more.
- 0
- 2016-01-03
- Will
-
buena opción conelmétodo selector de CSS,no sabía queexistía.¡Gracias!nice option with CSS selector method, didn't know it existed. thanks!
- 1
- 2016-04-14
- i_a
-
FYI: Si hay ` ` dentro de laetiqueta
,estonofuncionará.
FYI: If there is ` ` inside thetag this won't work.
- 1
- 2019-06-06
- RynoRn
-
- 2012-05-22
Sé queesto yaestámarcado como 'resuelto'pero solo como referencia,aquí hay unafunción que haceexactamente lo que quieres sintener que agregarningúnmarcado a laspublicaciones.Simplementepongaestoen functions.php de sutema:
add_filter('the_content', 'remove_empty_p', 20, 1); function remove_empty_p($content){ $content = force_balance_tags($content); return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content); }
Estoes deestaesencia: https://gist.github.com/1668216
I know this is already marked 'solved' but just for reference, here's a function which does exactly what you want without having to add any markup to posts. Just put this in your theme's functions.php:
add_filter('the_content', 'remove_empty_p', 20, 1); function remove_empty_p($content){ $content = force_balance_tags($content); return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content); }
This is from this gist: https://gist.github.com/1668216
-
Solo unapequeñanota sobreel uso deforce_balance_tags () ... Meencontré con unerror complicado causadoporestafunción cuando se usabaen contenido queincluía JavaScript (JSprovenía de Gravity Forms cuando usaba ajaxen unformulario).Hayproblemas conocidos con `force_balance_tags` cuandoencuentrael carácter` <`en determinadas situaciones.Consulteelticket [9270] (http://core.trac.wordpress.org/ticket/9270)para obtenermás detalles.Just a little note about using force_balance_tags()... I ran into a tricky bug caused by this function when it was used on content that included JavaScript (JS was coming from Gravity Forms when using ajax on a form). There are known problems with `force_balance_tags` when it encounters the `<` character in certain situations. See ticket [9270]( http://core.trac.wordpress.org/ticket/9270) for details.
- 6
- 2013-08-14
- Dave Romsey
-
Tuveelmismoproblema destacadopor Dave:elfragmentoeliminóel video de YouTubeincrustado yesotambién causóproblemas de validaciónen laspáginas de amplificadores.I had the same problem highlighted by Dave: the snippet removed embedded youtube video and that caused validation problems on amp pages also.
- 0
- 2019-06-29
- Marco Panichi
-
- 2011-04-06
Podríasejecutartufiltro antes de queese desagradable
wpautop
seenganche y semeta conelmarcado.add_filter('the_content', 'qanda', 7 );
Deesamanera,ya habrá convertido lo quenecesitapara cuando seenganche,lo que ayudaen algunos casos.
You could just run your filter before that nasty
wpautop
hooks on and messes with the markup.add_filter('the_content', 'qanda', 7 );
That way, you've already converted what you need to by the time it hooks on, which does help in some cases.
-
- 2017-12-06
Elmismoenfoque que dos respuestas antes que yo, sino unaexpresión regular actualizada,porque la suyanofuncionóparamí.
laexpresión regular:
/<p>(?:\s| )*?<\/p>/i
(grupo sin captura quebusca cualquiernúmero deespaciosen blanco o
s dentro de laetiquetap,no distingueentremayúsculas yminúsculas.add_filter('the_content', function($content) { $content = force_balance_tags($content); return preg_replace('/<p>(?:\s| )*?<\/p>/i', '', $content); }, 10, 1);
Same approach than 2 answers before me, but an updated regex, because his didn't work for me.
the regex:
/<p>(?:\s| )*?<\/p>/i
(non capture group looking for any number of either whitespace or
s inside p-tag, all case insenstive.add_filter('the_content', function($content) { $content = force_balance_tags($content); return preg_replace('/<p>(?:\s| )*?<\/p>/i', '', $content); }, 10, 1);
-
- 2011-04-03
Encontréestoextraño,peroen realidad llamar a
the_content()
insertarápárrafos de lamanera que usted describe.Si deseael código html,básicamente como loingresó (lomismo que "ver HTML" aleditar),useget_the_content()
que devuelveel contenido sinformatoni etiquetas depárrafo.Dado que lo devuelve,asegúrese de usar algo como:
echoget_the_content ();
Consultetambién: http://codex.wordpress.org/Function_Reference/get_the_content
I found this weird, but actually calling
the_content()
will insert paragraphs in the manner you describe. If you want the html code, basically like you entered it (the same as "view HTML" when editing), then useget_the_content()
which returns the content without formatting and paragraph tags.Since it returns it, make sure you use something like:
echo get_the_content();
See also: http://codex.wordpress.org/Function_Reference/get_the_content
-
bueno,gracias.¡Sinembargo,no quieroeso!Necesitopárrafosnormales.Enprimer lugar,eselmarcado semántico y,en segundo lugar,esexactamente como se supone que debe hacerlo.¡Simplementeno quierotenerpárrafos vacíos quenotengan sentido!Simplementeporque he aplicado unestilo aesospárrafos,también aparecenpárrafos vacíos conesteestilo ymi página se veextraña.well, thank you. However I don't want that! I need normal paragraphs. First of it's semantic markup and secondly it's just the way it's supposed to. I just don't to have empty paragraphs that don't make sense! Simply because I have styling applied to those paragraphs also empty paragraphs appear with this styling and my page looks weird.
- 0
- 2011-04-03
- mathiregister
-
De hecho,me preguntopor quémi add_filternofunciona.I actuall wonder why my add_filter thingy does not work?
- 0
- 2011-04-03
- mathiregister
-
Tetengo.Bueno,una cosa que recomendaríaprobares cambiar de HTML a visual y retroceder una o dos veces.Creo que cuando se cargaeleditor WYSIWYG,elimina lasetiquetas depárrafo vacías.Gotcha. Well one thing I would recommend trying is switching from HTML to visual and back a time or two. I believe when the WYSIWYG editor loads it does remove empty paragraph tags.
- 0
- 2011-04-04
- cwd
-
- 2014-05-07
Estoeliminará deforma recursivatodas lasetiquetas html vacías de la cadena
add_filter('the_content', 'remove_empty_tags_recursive', 20, 1); function remove_empty_tags_recursive ($str, $repto = NULL) { $str = force_balance_tags($str); //** Return if string not given or empty. if (!is_string ($str) || trim ($str) == '') return $str; //** Recursive empty HTML tags. return preg_replace ( //** Pattern written by Junaid Atari. '/<([^<\/>]*)>([\s]*?|(?R))<\/\1>/imsU', //** Replace with nothing if string empty. !is_string ($repto) ? '' : $repto, //** Source string $str );}
Elpatrón setoma de http://codesnap.blogspot.in/2011/04/recursively-remove-empty-html-tags.html
This will recursively remove all the empty html tags from the string
add_filter('the_content', 'remove_empty_tags_recursive', 20, 1); function remove_empty_tags_recursive ($str, $repto = NULL) { $str = force_balance_tags($str); //** Return if string not given or empty. if (!is_string ($str) || trim ($str) == '') return $str; //** Recursive empty HTML tags. return preg_replace ( //** Pattern written by Junaid Atari. '/<([^<\/>]*)>([\s]*?|(?R))<\/\1>/imsU', //** Replace with nothing if string empty. !is_string ($repto) ? '' : $repto, //** Source string $str );}
Pattern is taken from http://codesnap.blogspot.in/2011/04/recursively-remove-empty-html-tags.html
-
- 2017-05-15
Sitiene etiquetas
<p>
conespaciosen blancoen el contenido, ve atupublicación opágina yedítala sinestilo visual.encontrará algo de
allí ... Elimínelo y lasetiquetas<p>
vacías desaparecerán.If you have
<p>
tags with whitespace in the content, go to your post or page an edit it not in visual style.you would be find some
in there.. Delete it and the empty<p>
tags will disappear. -
- 2018-09-19
Paratener solo contenido html sinetiquetas
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_title(); ?> <?php echo $post->post_content; ?> <?php endwhile; endif; ?>
In order to have only html content without
tags we can use the following loop to out put only the html without formatting of the post or page<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_title(); ?> <?php echo $post->post_content; ?> <?php endwhile; endif; ?>
Hola chicos, Simplemente quieroevitar la creación depárrafos vacíosen mipublicación de wordpress. Eso sucede conbastantefrecuencia cuando seintentaespaciar contenidomanualmente.
No sépor quéestono surteefecto.
editar/actualizar:
parece queelproblemaeseste:
Hiceestafunción yomismoparafiltrar unaespecie depatrón de código cortoen mispublicaciones ypáginas. Apesar de queen mibackendelpostestá completamente hecho sinpárrafos yespaciosinnecesariosel resultado se ve así:
¿Algunaidea de dónde vienenestasp vacías?