Arrêtez WordPress d'ajouter automatiquement des balises <br> pour publier du contenu
-
-
Voulez-vous supprimer lesbalises *partout *,ou uniquementpour ces codes courts?Do you want to remove the tags *everywhere*, or only for those shortcodes?
- 0
- 2014-01-16
- shea
-
S'il vousplaît voirma réponseici: http://wordpress.stackexchange.com/questions/55782/remove-wpautop-from-shortcode-content-remove-whitespace-in-buffering/211784#answer-211784Please see my answer here: http://wordpress.stackexchange.com/questions/55782/remove-wpautop-from-shortcode-content-remove-whitespace-in-buffering/211784#answer-211784
- 0
- 2015-12-14
- Chiedo
-
9 réponses
- votes
-
- 2014-01-17
La réponsepar le karitén'estpasidéale comme dans denombreux cas:
- Vousne voulezpastout supprimer de
<br>, <p>
etc. Vous le voulez comme comportementpar défautpour votre compositeur visuel WP que le code ci-dessus supprimera - Dans denombreux cas,celaest considéré comme un "piratage du cœur" car celamodifie le comportement debasepar défaut de WP -parexemple,unetelle chosene passerapas sur ThemeForest
Commeje peux le voir,vous rencontrezprincipalement desproblèmes avec vos codes courts. Labonnefaçon d'aborder celan'estpas de changer le comportementpar défaut (pirater le cœur)mais simplement defiltrer le contenu. Alors ajoutez simplement unfiltreet passez dans une variable untableau de vos shotrcodes que vous voulezfiltrer comme ceci:
function the_content_filter($content) { $block = join("|",array("one_third", "team_member")); $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content); $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep); return $rep; } add_filter("the_content", "the_content_filter");
Le contenu à l'intérieur serafiltréet donc vos codes courts serontexempts de
<br>, <p>
etc.mais les autresparties du contenu -parexemple letexte standard dans l'éditeur WP créépar l'utilisateur - auratoujourstoutes lesfonctionnalités de WP.The answer by shea is not ideal as in many cases:
- You don't want to strip everything from
<br>, <p>
etc. You want it as a default behavior for your WP visual composer which the above code will delete - In many cases it is considered as "hacking the core" as this is changing the default core behavior of WP - for example such a thing will not pass on ThemeForest
As I can see you mainly have issues with you shortcodes. The right way to approach this is not to change the default behavior (hack the core) but to just filter the content. So just add a filter and in a variable pass an array of your shotrcodes you want to filter like this:
function the_content_filter($content) { $block = join("|",array("one_third", "team_member")); $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content); $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep); return $rep; } add_filter("the_content", "the_content_filter");
The content inside will be filtered and therefore your shortcodes will be free of
<br>, <p>
etc. but the other parts of content - for example standard text in the WP editor created by user - will still have full functionality of WP.References:
-
Cela aparfaitementfonctionné dansmonprojet.Génial,formidable,merveilleux,brillant ..... Tellementexcellent!It worked perfectly in my project. Awesome, tremendous, marvelous, brilliant ..... So much excellent!
- 0
- 2015-11-02
- arefin2k
-
@Borek Ceciestgénialet sembletrèsbien fonctionner (+1),maispour améliorer votre réponse,vouspourriezexpliquer ce que celafait?Àpremière vue,il supprime lesbalises «
»et «
» des shortcodes _near_ «one_third»et «team_member»,maisje ne suispastout àfait sûr (mes compétences REGEXne sont certainementpas à la hauteur).Pouvez-vous décrire ce qu'ilfaitpournous,et maintenantnouspouvons le configurerpour d'autres codes courts?@Borek This is awesome and seems to work really well (+1), but to improve your answer you could explain WHAT it is doing? From the looks of things, it's removing `` and `
` tags from _near_ `one_third` and `team_member` shortcodes, but I'm not exactly sure (my REGEX skills are definitely not up to scratch). Can you outline what it does for us, and now we can configure it for other shortcodes?- 0
- 2016-02-17
- dKen
-
@dKen Ilfaitexactement ce que vous avez écrit.Àpart regex,c'est vraiment simple car le contenuestfiltrépar unfiltre WPintégréthe_content.Nous avonsjustebesoin de donner le contenu àfiltrer via unefonction dans laquellenous spécifions quoi (bloquer)et comment (rep)filtrer.J'ai ajouté des référencespour que vous compreniezmieux celaen vérifiant chaquefonctionet filtre.En ce qui concerne l'ajout de codes courts,il vous suffit d'étendre letableau $blocken y ajoutant simplement desnoms de shortcodes comme `join ("| ",array (" one_third ","team_member ","next_one "," another_one "," one_more ")); »@dKen It's doing exactly what you wrote. Apart regex it's really simple as the content is fitered by a built in WP filter the_content. We just need to give the content to filter via function in which we specify what (block) and how (rep) to filter. I've added references so you better understand this by checking out each function and filter. As for adding more shortcodes you just need to expand the $block array by simply adding shortcodes names to it like `join("|",array("one_third", "team_member", "next_one", "another_one", "one_more"));`
- 0
- 2016-02-17
- Borek
-
... a dit le développeurpro,bravo.Votepositif....said the pro developer, well done. Upvoting.
- 0
- 2017-08-07
- fusion27
-
Pourinfo,celane fonctionne que lorsque lapageest consultée.Cependant,dans votre éditeur,vouspouveztoujours voir des
et des
indésirables comme d'habitude.FYI this works only when the page is viewed. However, in your editor you may very well still see unwanted's and
's as usual.- 0
- 2018-08-06
- MarsAndBack
-
@MarsAndBack FIYnousparlons de shortcodes.Iln'y a rien d'autre que labalise shortcode dans l'éditeur à afficher.Doncnon ...pas debalisesp brbr.Àmoins que vousne vouliez qu'ils soient làen tant que contenu régulier - c'esttout l'intérêt de cettefonction,donc ...je ne comprends vraimentpas ce que vous voulez direici ...@MarsAndBack FIY we are talking about shortcodes. There is nothing besides the shortcode tag in the editor to display. So no... no p br br tags. Unless you want them to be there as regular content - which is the whole point of this function so... I really don't get what you want to say here....
- 0
- 2018-08-07
- Borek
-
Jepeux comprendre que celaproduit des résultats différents dema réponse,ce quipourrait être ce que vous recherchez,maisil semble unpeu étrange de dire que la suppression dufiltre `wpautop` consiste à"pirater le cœur "dans une réponse quiimplique l'application de longuesexpressions régulièrespourpublier du contenu.Aucun desextraits de codene doit êtreinclus dans unthème WordPress;cegenre de choseest strictement unefonctionnalité spécifique auplugin ou au site.I can appreciate that this produces different results to my answer, which might be what you are going for, but it seems a bit strange to say that removing the `wpautop` filter is "hacking the core" in an answer that involves applying lengthy regex to post content. Neither snippet should be included in a WordPress theme; this sort of thing is strictly plugin or site-specific functionality.
- 0
- 2018-08-07
- shea
-
@shea Lorsque vous "ajoutez" desfonctionnalités ...trèsbien.Tant qu'ilne fait que ce qu'ilest censéfaireet ne change rien d'autre -tantmieux.Lorsque vous créez quelque chose qui accomplit X,mais change également le comportementpar défaut -par accident ou simplement dans sonensemble - c'esten fait unpiratage du cœur.Pouvez-voustuer unemouche avec un NUKE?Bien sûr,maismieux vaut utiliser unetapette àmouche.Le codepourrait avoir 5000 lignes d'expression régulièreet c'estbien carilne fait qu'une seule chosepour laquelleilest conçu.Quant auxextraits,je suistotalement d'accord.Changern'importe quellefonctionnalité appartient à unplugin.Cela étant dit,OP a demandé des codes courtset a donc obtenu une réponse.@shea When you "add" functionality... fine. As long as it does only what it's supposed to and not changing anything else - good. When you create something that accomplishes X, but also changes the default behavior - by accident or just as a whole - that's actually hacking the core. Can you kill a fly with a NUKE? Sure, but better use a fly swatter. The code could have 5000 lines of regex and it's fine as it only does one thing that ti's designed for. As for the snippets I totally agree. Changing any functionality belongs in a plugin. That being said OP asked for shortcodes so he got an answer.
- 0
- 2018-08-07
- Borek
-
WordPressest conçu autour d'actionset defiltres spécifiquementpourfaciliter la suppression ou l'ajoutfacile desfonctionnalités debase de cettemanière.Cen'estpaspirater lenoyau.Lepiratage reviendrait à contourner lamanièreprévue defaire les chosesWordPress is designed around actions and filters specifically to facilitate easily removing or adding to core functionality in this way. That's not hacking the core. Hacking would be circumventing the intended way of doing things
- 0
- 2018-08-15
- shea
-
- 2014-01-17
Lafonction
wpautop()
ajoute desbalises<p>
et<br>
à votre contenu afin depréserver les sauts de ligne. Si vouspréférez ajouter cesbalises vous-même,vouspouvez supprimer lesfiltres qui appliquent cettefonction au contenu de l'article:remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );
Si vous souhaitez conserver la création automatique duparagaraphe (insérer lesbalises
<p>
)et simplement supprimer lesbalises<br>
supplémentaires,vouspouvez utiliser ceci code à laplace:remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); function wpse_wpautop_nobr( $content ) { return wpautop( $content, false ); } add_filter( 'the_content', 'wpse_wpautop_nobr' ); add_filter( 'the_excerpt', 'wpse_wpautop_nobr' );
Voir ce lien si vousne savezpas oùplacer ce code.
The
wpautop()
function adds<p>
and<br>
tags to your content in order to preserve line breaks. If you would rather add these tags yourself, then you can remove the filters which apply this function to the post content:remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );
If you would like to keep the automatic paragaraph creation (inserting
<p>
tags) and just remove the additional<br>
tags, you can use this code instead:remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); function wpse_wpautop_nobr( $content ) { return wpautop( $content, false ); } add_filter( 'the_content', 'wpse_wpautop_nobr' ); add_filter( 'the_excerpt', 'wpse_wpautop_nobr' );
See this link if you're not sure where to put this code.
-
- 2016-11-22
Installez leplugin "Don't Muck My Markup".
Il ajoute une option de case à cocher à chaquepage désactivant l'insertion automatique desbalises
<p>
et<br>
.Ilexiste également une optionpourfaire cela à l'échelle du site.
Install the plugin "Don't Muck My Markup".
It adds a checkbox option to each page disabling auto insertion of
<p>
and<br>
tags.There is also an option to do this site-wide.
-
- 2016-09-20
C'estprobablement l'éditeur detexte quifait le désordre.Voici ce quej'aifait:
J'utilise TinyMCE.Sous lesparamètres de l'éditeur detexte,j'ai décoché "Arrêter de supprimer le" & lt;p> "et" & lt;br/> "balises lors de l'enregistrementet les afficher dans l'éditeur HTML".Atravaillépourmoi.
Probably it ís the text editor that makes a mess. This is what I did:
I use TinyMCE. Under settings for the text editor, I unchecked "Stop removing the "< p >" and "< br / >" tags when saving and show them in the HTML editor". Worked for me.
-
- 2015-11-17
Vouspourriezpeut-être simplement utiliser
do_shortcode()
sitout ce que vous avez dans votre contenuest des codes courts,tant que vousn'avezpas d'autre contenunécessitant lesfiltres.Jene connaispas le contexte,mais si vous êtes dans laboucle:
echo do_shortcode($post->post_content);
Maybe you could simply use
do_shortcode()
if all you have in your content is shortcodes, as long as you don't have any other content that need the filters.I don't know the context, but if you're in the loop :
echo do_shortcode($post->post_content);
-
- 2016-12-07
La réponse de Borekn'apasfonctionnépourmon cas d'utilisation,qui consiste à écrire du HTMLbrut.
Pour cela,j'ai utilisé leplugin Code Snippets (vouspermet d'ajouterfacilement desextraits PHP arbitraires qui sontexécutés)pour créer unextrait de code courtpour un
[html][/html]
shortcode. Ce quiest cool avec ce shortcode,c'est qu'ilest compatible avec le leplugintoggle-wpautop qui vouspermet de désactiver l'insertion automatique desbalises<br>
et<p>
sur un articleentier. Vouspouvez utiliser l'un ou l'autre,mix & amp;match.function html_shorttag_filter($content) { // Based on: https://wordpress.org/plugins/lct-temporary-wpautop-disable-shortcode/ $new_content = ''; $pieces = preg_split('/(\[html\].*?\[\/html\])/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE); // don't interfere with plugin that disables wpautop on the entire page // see: https://plugins.svn.wordpress.org/toggle-wpautop/tags/1.2.2/toggle-wpautop.php $autop_disabled = get_post_meta(get_the_ID(), '_lp_disable_wpautop', true); foreach ($pieces as $piece) { if (preg_match( '/\[html\](.*?)\[\/html\]/is', $piece, $matches)) { $new_content .= $matches[1]; } else { $new_content .= $autop_disabled ? $piece : wpautop($piece); } } // remove the wpautop filter, but only do it if the other plugin won't do it for us if (!$autop_disabled) { remove_filter('the_content', 'wpautop'); remove_filter('the_excerpt', 'wpautop'); } return $new_content; } // idea to use 9 is from: https://plugins.svn.wordpress.org/wpautop-control/trunk/wpautop-control.php add_filter('the_content', 'html_shorttag_filter', 9); add_filter('the_excerpt', 'html_shorttag_filter', 9);
Borek's answer didn't work for my use case, which is writing raw HTML.
For that I used the Code Snippets plugin (lets you easily add arbitrary PHP snippets that get run) to create a snippet for an
[html][/html]
shortcode. What's cool about this shortcode is that it's compatible with the toggle-wpautop plugin which lets you disable the automatic insertion of<br>
and<p>
tags on an entire post. You can use either, mix & match.function html_shorttag_filter($content) { // Based on: https://wordpress.org/plugins/lct-temporary-wpautop-disable-shortcode/ $new_content = ''; $pieces = preg_split('/(\[html\].*?\[\/html\])/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE); // don't interfere with plugin that disables wpautop on the entire page // see: https://plugins.svn.wordpress.org/toggle-wpautop/tags/1.2.2/toggle-wpautop.php $autop_disabled = get_post_meta(get_the_ID(), '_lp_disable_wpautop', true); foreach ($pieces as $piece) { if (preg_match( '/\[html\](.*?)\[\/html\]/is', $piece, $matches)) { $new_content .= $matches[1]; } else { $new_content .= $autop_disabled ? $piece : wpautop($piece); } } // remove the wpautop filter, but only do it if the other plugin won't do it for us if (!$autop_disabled) { remove_filter('the_content', 'wpautop'); remove_filter('the_excerpt', 'wpautop'); } return $new_content; } // idea to use 9 is from: https://plugins.svn.wordpress.org/wpautop-control/trunk/wpautop-control.php add_filter('the_content', 'html_shorttag_filter', 9); add_filter('the_excerpt', 'html_shorttag_filter', 9);
-
- 2019-01-26
Cettefonction supprime uniquement lesbalises
<p>
et<br>
pour le shortcode.function bnd_fix_shortcodes_extra_line_break( $content ){ $array = array ( '<p>[' => '[', ']</p>' => ']', ']<br />' => ']' ); $content = strtr( $content, $array ); return $content; } add_filter('the_content', 'bnd_fix_shortcodes_extra_line_break');
This function only removes the
<p>
and<br>
tag for the shortcode.function bnd_fix_shortcodes_extra_line_break( $content ){ $array = array ( '<p>[' => '[', ']</p>' => ']', ']<br />' => ']' ); $content = strtr( $content, $array ); return $content; } add_filter('the_content', 'bnd_fix_shortcodes_extra_line_break');
-
Cela affecte égalementtous les cas dans lesquels `[`et `]`ne sont *pas * utilisés dans le cadre d'un appel de code court.It also affects all cases in which `[` and `]` are *not* used as part of a shortcode call.
- 0
- 2019-01-26
- fuxia
-
- 2019-09-07
pour ceux quine sontpasfamiliarisés avec lepiratage de code ou quine veulentpas utiliser deplug-in,vouspouvez lefaire.
1) copiertout le code actuel despages WP (éditeur detexte)
2)puis collez-le dans lebloc-noteset continuez àmodifier (ajoutez un code court,un code html ou un code css)
3) Copier coller dubloc-notes vers lemême scree sur lespages WP (éditeur detexte)
4) Appuyez sur lebouton [UPDATE] qui setrouve sur le côté droit desmêmespages WPpourpublier lespages
5) Enfin,prévisualisez-le sur le siteen direct
L'astuceiciest dene pas revenir à [éditeur visuel]pour cespagesparticulières,puis l'ajout automatiquepour [p] ou [br]ne seproduiraplus.
for those who are not familiar with code hack or don't want to use plug in , you can do this.
1) copy all current code from WP pages ( text editor)
2) then paste to notepad and continue require edit ( add short code , html code or css code)
3) Copy paste from notepad to the same scree on WP pages ( text editor)
4) Hit [UPDATE] button which is located at the right hand side of the same WP pages to publish the pages
5) Finally preview it on live site
The trick here is dont switch back to [visual editor] for this particular pages then auto append for [p] or [br] wont happen anymore.
-
- 2015-12-05
Une solutiontrès simple:n'utilisezpas denouvelles lignes dans l'éditeur wordpress.Oui,denouvelles lignes clarifient.Cependant,dans ce cas,aucuneinterruptionn'esttoujours compréhensible.
A very simple solution: Do not use new lines in the wordpress editor. Yes, new lines do clarify. However, in this case no breaks may still be acceptably understandable.
Existe-t-il unmoyen d'empêcher WordPress d'insérer automatiquement desbalises
<br>
lors de l'ajout de retours dans l'éditeur detexte WordPress.Je voudrais qu'il se comporte davantage comme un éditeur de code oùje peux structurer le code commeje le souhaiteet le rendrefacile à lire.
Le code quej'utilise dans l'éditeurest:
Je voudrais le structurer comme cecipour qu'il soitplusfacile à lireet àmodifier:
Cependant,lorsque vousfaites cela,desbalises
<br>
invisibles seront ajoutées au contenu de l'article,ce quigâchera lamiseen page demapage.