Backslash behoud (\) brengt ons bij een van de vervelende “features” van WordPress: het stript automatisch backslashes van posts.
Het heeft z’n doel en toepassing, maar het is verrekte vervelend als je probeert code voorbeelden te plaatsen op jouw WordPress website.
In dit erg korte artikel laat ik je zien hoe ik het opgelost heb voor mijn websites.
Een kleine functie die alle backslashes van een post omzet naar HTML entities, waardoor ze niet verloren gaan of verwijderd worden. Weergave in tekst en in code voorbeelden werkt zoals verwacht.
Overigens; deze functie doet dit iedere keer als je een post opslaat. Zelf een HTML entity in de code (Tekst view) werkt namelijk maar èèn keer, omdat bij het inladen van een post in de editor, de HTML entity weer een gewone backslash is. Deze functie vervangt bij een update deze weer correct naar een backslash HTML entity.
Backslash behoud door middel van HTML Entity
De functie is eigenlijk belachelijk eenvoudig en ik kwam op dit idee door een andere WordPress toepassing die ik gemaakt heb voor weergave van een artikel inhoud.
Ik gebruik het op mijn eigen websites en het werkt uitstekend.
Dit is wat de functie doet:
Als een post geplaatst wordt (nieuwe post, post editen, etc), dan zal deze functie elke voorkomen van een backslash vervangen door de HTML entity voor een backslash (zie onze HTML ASCII Tabel) wat de volgende HTML “code” is: “#&92;
“.
De post wordt vervolgens opgeslagen, waarbij WordPress de backslashes verwijderd maar niet de HTML entities.
Bij het opnieuw openen van een post, om te bewerken bijvoorbeeld, zullen de backslashes echter zichtbaar worden als gewone backslashes.
Als je de gewijzigde post weer opslaat, doet de functie weer z’n werk en zo blijven backslashes behouden.
Als iemand denkt dat dit verkeerd is, of gevaarlijk is, of betere methoden weet, dan hoor ik dat graag in de opmerkingen!
Ad Blocking Gedetecteerd Vriendelijk verzoek om te overwegen Ad Blocking uit te zetten voor onze website.
We zijn afhankelijk van inkomen uit Advertenties om de website te kunnen draaien.
Je kunt ons ook op andere manieren ondersteunen (zie Ondersteun ons links bovenin).
Mijn Functie voor BackSlash Behoud
Plak de volgende code in de functions.php file van het theme dat je actief gebruikt.
Let er wel op dat je dit moet plaatsen voor elke andere aanroep van “add_action” met “save_post” erin, dus die hierop lijkt:
add_action('save_post', 'eenofanderefunctie' );
.
Als je dat niet doet, dan werkt het grapje niet, want de andere call kan de backslashes al strippen. Het kan overigens goed zijn dat jouw functions.php nog niet zo’n dergelijke call heeft, dus als je het niet zeker weet, plak het dan helemaal aan het begin van het bestand (na een eventuele “<?php” natuurlijk)!
Dat dit werkt kun je overigens in deze post al zien … er staan hier genoeg backslashes in die lekker blijven staan …
LET OP!
In regel 5, moet je dit stukje code '\'
vervangen met dit: ‘\’ (inclusief de enkele aanhalingstekens).
Helaas blijft het content management systeem of de code highlighter het vervangen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // T4A Preserve Backslashes in posts
function t4a_keepbackslash($PostID) {
$thePost = get_post($PostID);
$Content = str_replace('\\', '\', $thePost->post_content);
// unhook this function so it doesn't loop infinitely
remove_action( 'save_post', 't4a_keepbackslash' );
$UpdatedPost = array (
'ID' => $PostID,
'post_title' => $thePost->post_title,
'post_content' => $Content
);
wp_update_post( $UpdatedPost );
// re-hook this function
add_action( 'save_post', 't4a_keepbackslash' );
}
add_action('save_post', 't4a_keepbackslash' ); // Update Content when saving content |
Reacties
Er zijn nog geen reacties geplaatst.
Je kunt jouw eigen opmerkingen plaatsen m.b.v. dit formulier, of een reactie op een bestaande opmerking plaatsen door op de "Beantwoorden" knop te klikken.