Pagina1 van 1

WordPress – Backslash behoud in Posts

WordPress – Backslash behoud in Posts
   0

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!

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 … 


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

 

Donation options


Donaties worden zeer gewaardeerd maar zijn echt niet verplicht. Donaties worden gebruikt om de web-hosting kosten te dekken, hard- of software aan te schaffen voor projecten die we hier bespreken, of zo nu en dan voor een pilsje of een kopje koffie!

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.



Jouw opmerking ...

Vriendelijk verzoek om hier geen lange bestanden te posten (zoals source codes, log bestanden of config bestand). Gebruik het Forum hiervoor.

Deel:
*
*
Stuur me een notificatie van nieuwe opmerkingen (email).
       Je kunt jouw RSS reader gebruiken op opmerkingen te volgen.


Tweaking4All gebruikt de gratis Gravatar dienst voor de weergave van Avatars.
Tweaking4All deelt jouw email adressen NOOIT.