CodePen IO WordPress Shortcode funktioniert nicht

CodePen.io WordPress Shortcode funktioniert nicht

25. November 2018

Eine kurze Notiz für alle, die gerne CodePens in ihren WordPress-Blog einfügen und dies über das Plugin von Chris Coyier tun. Bei mir wollte das Plugin nicht so recht funktionieren. Es hat nicht den Pen ausgegeben, sondern nur den Inhalt des Shortcodes und es hat gleichzeitig die Seite zerstört.

 

 

Problem

Ich verwende zum Einfügen des Pens den WordPress Shortcode, den man in den Embed-Optionen bei jedem Pen kopieren kann. Anstatt des Pens wird der Inhalt des Shortcodes etwas kryptisch dargestellt und der restliche Inhalt der Seite fehlt.

 

 

 

Die Analyse des Quelltexts der Seite ergab, dass die Apostroph-Zeichen am Ende von URLs (innerhalb des kopierten Snippets) von WordPress in die HTML-Entität (‘) für das einfache linke Anführungszeichen umgewandelt werden.

 

<p class=’codepen‘ data-height=’266′ data-theme-id=’15823′ data-slug-hash=’YXVwGm‘ data-default-tab=’result‘ data-animations=’run‘> See the Pen <a href=’http://codepen.io/designerzone/pen/YXVwGm/&#8216;>Natural Stacking Order</a> by Markus Winkelmann (<a href=’http://codepen.io/designerzone&#8216;>@designerzone</a>) on <a href=’http://codepen.io&#8216;>CodePen</a>.</p><script async src=“//codepen.io/assets/embed/ei.js“></script>

 

 

Lösung

Ich konnte mir lange nicht erklären, warum das passiert. Irgendwann bin ich auf die Funktion wptexturize von WordPress gestoßen, die standardmäßig aktiv ist. Diese wandelt bestimmte Zeichen in typografisch korrektere Versionen um und gilt auch für Shortcodes. Zum Glück gibt es den no_texturize_shortcodes-Filter, mit dem man den CodePen-Shortcode davon ausschließen kann.

Hierfür fügt ihr einfach folgendes Snippet in eure functions.php ein:

 

PHP
add_filter( 'no_texturize_shortcodes', 'shortcodes_to_exempt_from_wptexturize' );
function shortcodes_to_exempt_from_wptexturize( $shortcodes ) {
    $shortcodes[] = 'codepen_embed';
    return $shortcodes;
}

Ursache

Ich habe übrigens folgende Zeile im Plugin-Quellcode für das Verhalten ausfindig gemacht:

 

$content = str_replace(‚&amp;#8217;‘, &quot;’&quot;, html_entity_decode($content));

 

&amp;#8217; steht für das rechte einzelne Anführungszeichen. wptexturizescheint nun bei den URLs im Code das erste Anführungszeichen mit einem rechten einfachen Anführungszeichen zu ersetzen und das zweite Anführungszeichen mit einem linken. Der Code von Chris Coyier ersetzt aber nur das rechte einfache Anführungszeichen mit einem normalen Apostroph.

 

Als Werbeagentur helfen wir auch gerne mit Webproblemen!

SIE KÖNNEN SICH BEI UNS BEDANKEN!

Sofern Ihnen der Artikel geholfen hat, können Sie sich mit wenig Aufwand revanchieren!

 

Bitte hinterlassen Sie uns eine positive Bewertung.

 

Falls Sie Fehler entdecken oder ein Artikel unvollständig ist, freuen wir uns über einen Kommentar.

Bewertung erstellen

Kommentare

Sag uns deine Meinung! Jetzt antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.