Die Holzhammer-Methode

  • Bei WordPress trifft man ab und zu mal auf die Situation, dass man in der Ausgabe im Frontend seiner Website einen HTML-Code hat, der nicht die eigenen Anforderungen erfüllt, der sich aber ebenso nicht anpassen lässt. Er stammt entweder vom WordPress Core selbst oder von einem Plugin, welches den Code weder über ein Template noch über einen verwendbaren Hook ausgibt. In dem Fall muss man - wie ich sie gerne nenne – die Holzhammer-Methode verwenden, die ich nun hier kurz beschreiben werde.

    Worum geht es?

    Ein praktisches Beispiel: der WordPress Core liefert den robots-Tag im HTML-Code in der Form aus:

    Code
    <meta name='robots' content='max-image-preview:large' />

    Der Code stammt von dieser Stelle hier: https://github.com/WordPress/Word…emplate.php#L49

    Wie man sieht, ist er dort nicht anpassbar. Er steht genau so im Code vom WordPress Core. Man möchte nun aber statt der einfachen die doppelten Anführungszeichen am HTML-Attribut „robots“ haben.

    PHP Buffer verwenden

    Um das zu ermöglichen, muss man die Ausgabe des HTML-Codes im Frontend anpassen. Eine Lösung dafür könnte folgender Code unter Verwendung von PHP Buffer mit ob_start() sein:

    Code
    function custom_replace_quotes( $buffer ) {
        // Here you can change the HTML content
        return str_replace( "'robots'", '"robots"', $buffer );
    }
    
    add_action( 'template_redirect', function() {
        ob_start();
        ob_start( 'custom_replace_quotes' );
    });

    Hier passiert folgendes:

    • Im template_redirect-Hook wird zunächst der PHP Buffer aktiviert. Also in dem Moment, wo WordPress das anzuzeigende Template ermittelt, folglich vor jeder Ausgabe.
    • Bei deinem zweiten Aufruf wird eine Callback-Funktion als Parameter übergeben, die wiederum nach Ende der Ausgabe automatisch aufgerufen werden soll.
    • Und diese Callback-Funktion führt dann die Ersetzung der einfachen zu den doppelten Anführungszeichen durch.

    Möglichkeiten

    Das oben beschriebene Vorgehen ermöglicht zahlreiche Optionen, die man in scheinbar unlösbaren Fällen hat. Man kann damit jeglichen HTML-Code im Frontend anpassen. Optimal wäre natürlich, wenn man hierbei mit regulären Ausdrücken arbeitet, um die anzupassenden Code-Stellen auch wirklich zu treffen.

    Fallstricke

    Man muss jedoch auch gleichzeitig aufpassen bei diesem Lösungsweg. Es gibt 2 Fallstricke:

    • Der PHP Buffer selbst könnte ggfs. einen Fehler werfen und so die Ausgabe der gesamten Website stören. Ob das passiert hängt vom HTML-Code selbst, aber auch von serverseitigen Einstellungen im Hosting ab. Es könnten hierbei auch Grenzwerte erreicht werden.
    • Andere Plugins könnten das ebenso machen. Caching-Plugins sind sehr bekannt dafür Buffer-Methoden für die Ausgabe zu verwenden. Dadurch könnte es dazu kommen, dass 2 oder mehr Codes die gleiche Funktion ausführen wollen – was ebenso in einer nicht erreichbaren Website enden könnte.

    Fazit

    Auch wenn es diese Möglichkeit gibt, die bessere Lösung für solche Fälle ist weiterhin die Anpassung an der Quelle des HTML-Codes selbst. Nur sollte man eben weder die WordPress Core Dateien noch Plugin- oder Theme-Dateien anpassen. Eventuell wäre es empfehlenswerte sich in den Fällen an den Support der verantwortlichen Komponenten zu wenden.

    Dieser Beitrag wurde ursprünglich hier veröffentlicht: https://www.thomaszwirner.de/die-holzhammer-methode/

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!