Ferma WordPress aggiungendo automaticamente tag <br> per pubblicare contenuti
-
-
Vuoi rimuoverei tag * ovunque * o soloper quegli shortcode?Do you want to remove the tags *everywhere*, or only for those shortcodes?
- 0
- 2014-01-16
- shea
-
Siprega di vedere lamia risposta qui: 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 risposta
- voti
-
- 2014-01-17
La risposta di sheanon è l'ideale comein molti casi:
- Non vuoi rimuoveretutto da
<br>, <p>
ecc. Lo vuoi come comportamentopredefinitoperiltuo compositore visivo WP cheil codice sopra cancellerà - Inmolti casi si considera come "hackerareil core"in quanto sta cambiandoil comportamentoprincipalepredefinito di WP,adesempio una cosa delgenerenonpasserà su ThemeForest
Comeposso vedere,haiprincipalmenteproblemi congli shortcode. Ilmodogiustoper affrontare questoproblemanon èmodificareil comportamentopredefinito (hackthe core)ma semplicementefiltrareil contenuto. Quindi aggiungi unfiltroe in una variabilepassa un array deituoi codici di ripresa che desiderifiltrarein questomodo:
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");
Il contenuto all'interno verràfiltratoe quindii tuoi codicibrevi sarannoprivi di
<br>, <p>
ecc.ma le altreparti del contenuto,adesempioiltesto standardnell'editor WP creato dall'utente - avrà ancora lapienafunzionalità di WP.<"Riferimento :"
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:
-
Hafunzionatoperfettamentenelmioprogetto.Fantastico,tremendo,meraviglioso,geniale ..... Tantoeccellente!It worked perfectly in my project. Awesome, tremendous, marvelous, brilliant ..... So much excellent!
- 0
- 2015-11-02
- arefin2k
-
@Borek Questo èfantasticoe sembrafunzionaremoltobene (+1),mapermigliorare latua rispostapotresti spiegare COSA stafacendo?A quantopare,sta rimuovendoi tag "
"e "
" dagli shortcode _near_ `one_third`e`team_member`,manonne sonoesattamente sicuro (lemie abilità REGEXnon sono assolutamente all'altezza).Puoi delineare cosafapernoie orapossiamo configurarloper altri codicibrevi?@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 Stafacendoesattamente quello che hai scritto.Aparte leespressioni regolari,è davvero semplicein quantoil contenuto èfiltrato da unfiltro WPintegratothe_content.Dobbiamo solo dareil contenuto dafiltraretramite lafunzionein cui specifichiamo cosa (blocco)e come (rep)filtrare.Ho aggiunto riferimentiin modo chetupossa capiremeglio questo controllando ognifunzionee filtro.Per quanto riguarda l'aggiunta dipiù shortcode,devi soloespandere l'array $block semplicemente aggiungendonomi di shortcode come `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
-
... ha detto lo sviluppatoreprofessionista,ben fatto.Upvoting....said the pro developer, well done. Upvoting.
- 0
- 2017-08-07
- fusion27
-
Cordiali saluti,funziona solo quando lapagina viene visualizzata.Tuttavia,neltuoeditorpotresti ancora vedere
e
indesiderati come al solito.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 FIY stiamoparlando di shortcode.Non c'èniente da visualizzare oltre altag shortcodenell'editor.Quindino ...nessuntagp brbr.Ameno chetunon voglia che sianopresenti come contenutonormale,che èilpunto centrale di questafunzione,quindi ...non ho davvero quello che vuoi dire qui ...@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
-
Posso apprezzare che questoproduce risultati diversi dallamia risposta,chepotrebbeessere quello che stai cercando,ma sembra unpo 'strano dire che rimuovereilfiltro `wpautop` è" hackerareil core "in una risposta cheimplica l'applicazione di una lunga regexperpubblicare contenuti.Nessuno dei dueframmenti dovrebbeessereinclusoin untema WordPress;questogenere di cose è strettamenteplug-in ofunzionalità specifiche del sito.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 Quando "aggiungi"funzionalità ... vabene.Finchéfa solo quello che dovrebbee non cambianient'altro -bene.Quando crei qualcosa che realizza X,ma cambia ancheil comportamentopredefinito -per caso o semplicementenel suoinsieme -in realtà sta hackerandoilnucleo.Puoi uccidere unamosca con un NUKE?Certo,mameglio usare uno scacciamosche.Il codicepotrebbe avere 5000 righe di regexe vabene perchéfa solo una cosaper cui èprogettato.Per quanto riguardagli snippet sonototalmente d'accordo.Lamodifica di qualsiasifunzionalità appartiene a unplugin.Detto questo,OP ha chiesto dei codicibrevi,quindi ha ottenuto una risposta.@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
-
WordPress èprogettato attorno ad azionie filtri specificamenteperfacilitare la rimozione o l'aggiunta semplice allefunzionalitàprincipaliin questomodo.Questonon è hackerareilnucleo.L'hacking sarebbe aggirareilmodoprevisto difare le coseWordPress 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
Lafunzione
wpautop()
aggiungei tag<p>
e<br>
aituoi contenutiperpreservare leinterruzioni di riga. Sepreferisci aggiungeretu stesso questitag,puoi rimuoverei filtri che applicano questafunzione al contenuto delpost:remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );
Se desiderimantenere la creazione automatica delparagaraph (inserendoi tag
<p>
)e rimuovere semplicementei tag<br>
aggiuntivi,puoi utilizzare questo codiceinvece: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' );
Vedi questo link senon sei sicuro di dovemettere questo codice.
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
Installailplugin "Don't Muck My Markup".
Aggiunge un'opzione della casella di controllo a ciascunapagina che disabilita l'inserimento automatico deitag
<p>
e<br>
.Esiste anche un'opzionepereseguire questa operazione a livello di sito.
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
Probabilmente è l'editor ditesto a creare confusione.Questo è quello che hofatto:
Uso TinyMCE.Nelleimpostazioni dell'editor ditesto,ho deselezionato "Interrompi rimozione" & lt;p> "e" & lt;br/> "tag duranteil salvataggioe mostrarlinell'editor HTML".Hafunzionatoperme.
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
Forsepotresti semplicemente usare
do_shortcode()
setutto ciò che hainei tuoi contenuti sono codicibrevi,a condizione chetunon abbia altri contenuti chenecessitano deifiltri.Non conoscoil contesto,ma se seinel ciclo:
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 risposta di Boreknon hafunzionatoperilmio caso d'uso,ovvero scrivere HTMLgrezzo.
Per questo ho utilizzatoilplug-in Snippet di codice (che consente di aggiungerefacilmenteframmenti PHP arbitrari che vengonoeseguiti)per creare uno snippetper uno shortcode
[html][/html]
. La cosainteressante di questo shortcode è che è compatibile con toggle-wpautop cheti consente di disabilitare l'inserimento automatico deitag<br>
e<p>
su uninteropost. Puoi utilizzare sia,mix & amp; corrispondenza.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
Questafunzione rimuove soloi tag
<p>
e<br>
per lo 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');
-
Haeffetto anche sututtii casiin cui "[`e `]` *non * sono usati comeparte di una chiamata shortcode.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
per coloro chenon hannofamiliarità con l'hacking del codice onon vogliono utilizzareplug-in,puoifarlo.
1) copiatuttoil codice corrente dallepagine WP (editor ditesto)
2) quindiincollanelblocconotee continua richiedi lamodifica (aggiungi codicebreve,codice html o codice css)
3) Copiaincolla dalblocconote allo stesso schermonellepagine di WP (editor ditesto)
4) Premiilpulsante [AGGIORNA] che sitrova sul lato destro delle stessepagine WPperpubblicare lepagine
5) Infine visualizzaloin anteprima sul sito live
Iltrucco qui ènontornare a [editor visuale]per questepagineparticolari,quindi aggiungere automaticamenteper [p] o [br]non accadràpiù.
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
Una soluzionemolto semplice:non utilizzarenuove righenell'editor di wordpress.Sì,lenuove righe chiariscono.Tuttavia,in questo caso,nessunainterruzionepotrebbeessere ancora accettabilmente comprensibile.
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.
Esiste unmodoperimpedire a WordPress diinserire automaticamentei tag
<br>
quando si aggiungonoi ritorninell'editor ditesto di WordPress.Vorrei che si comportassepiù come uneditor di codicein cuiposso strutturareil codice comemi piacee renderlofacile da leggere.
Il codice che sto utilizzandonell'editor è:
Vorrei strutturarloin questomodoin modo che siapiùfacile da leggeree modificare:
Tuttavia,quando siesegue questa operazione,al contenuto delpost verranno aggiuntitag
<br>
invisibili che rovinerannoil layout dellamiapagina.