Autokorrektur deaktivieren

  • Guten Tag,

    Wordpress ändert Zeichen die ich im Editor eingegeben habe. Z.B. macht er aus mehreren Minuszeichen eine horizontale Linie, oder aus zwei Minuszeichen macht er eines. Da die Plugins, die ich zur Deaktivierung dieses Verhaltens installiert habe, alle nicht funktioniert haben, habe ich die Funktion wptexturize in der Datei /wp-includes/formatting.php durch einen Dummy ersetzt, der den übergebenen Text ohne Veränderung zurück gibt. Damit habe die Veränderungen meiner eingegeben Zeichen im Editor erfolgreich unterbunden.

    Leider verändert Wordpress nach wie vor Eingaben im Permalink. Es ist nicht möglich einen Permaling mit zwei aufeinanderfolgenden Minuszeichen zu erstellen. Wenn ich auf ok klicke wird das doppelte Minuszeichen durch eines ersetzt. Da ein doppeltes Minuszeichen gegen keine Regel in einer Linkadresse verstößt, nehme ich an dass es sich um einen Fehler handelt. Ein doppelter Unterstrich bleibt übrigens erhalten.

    In den PHP Dateien konnte ich nichts finden, was dieses Verhalten erzeugt.

    Wie kann ich diesen Fehler beheben?

    Luka

    • 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

  • [...] habe ich die Funktion wptexturize in der Datei /wp-includes/formatting.php durch einen Dummy ersetzt, der den übergebenen Text ohne Veränderung zurück gibt.

    Das ist die denkbar ungünstigste Variante, da diese Änderung beim nächsten Update überschrieben wird. Core-Dateien ändert man nicht. Der vorgesehene Weg läuft über einen Filter, den man in der functions.php eines Child Themes einbaut:

    Code
    add_filter( 'run_wptexturize', '__return_false' );

    Was den Double Dash/Hyphen in der URL angeht, gibt es, soweit ich es sehen kann keinen einfachen Weg. Grundsätzlich möglich wäre folgende Funktion in der functions.php eines Child Tehems:

    Code
    add_filter( 'sanitize_title', 'mmx_no_sanitation', 10, 2 );
    function mmx_no_sanitation( $title, $raw ){
        return $raw;
    }

    Eigentlich ist die Funktion auch gar nicht "schuld" an der Umschreibung, also aus zwei oder mehreren aufeinander folgenden Bindestrichen einen einzelnen zu machen. Es ist aber die einzige mit der das Original zurückgeben werden kann. Da somit sanitize_title() aber immer das Original zurück liefert, werden Akzente nicht mehr automatisch erstellt.

    Das "Problem" liegt in der Erstellung des Permalink (get_sample_permalink, get_permalink) und der Filterung sowie den Rewrite Regeln. Natürlich kann man das Sytem überlisten:


    In der Datenbank sieht man dann auch den post_name (Slug) mit mehreren Bindestrichen. Aufrufen kann man den Beitrag aber nicht, der Server meldet zu viele Umleitungen.

    Ich kann nur vermuten, das man sich bei WordPress für die Umwandlung zu einem Bindestrich entschieden hat um mit der Funktion sanitize_file_name() kompatibel zu bleiben. Dieser Filter verhindert Probleme im Dateisystem da unter Linux der Double-Dash auf Kommandozeilenebene eine besondere Bedeutung hat. Es ist aber nur eine Vermutung.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Erstmal Danke für deine Hilfe

    > Das ist die denkbar ungünstigste Variante, da diese Änderung beim nächsten Update überschrieben wird. Core-Dateien ändert man nicht.

    Für mich ist das eher ein Grund keine Updates zu machen. Da habe ich schon öfters böse Überraschungen erlebt.> Was den Double Dash/Hyphen in der URL angeht, gibt es, soweit ich es sehen kann keinen einfachen Weg. Grundsätzlich möglich wäre folgende Funktion in der functions.php eines Child Tehems:

    > Eigentlich ist die Funktion auch gar nicht "schuld" an der Umschreibung, also aus zwei oder mehreren aufeinander folgenden Bindestrichen einen einzelnen zu machen. Es ist aber die einzige mit der das Original zurückgeben werden kann. Da somit sanitize_title() aber immer das Original zurück liefert, werden Akzente nicht mehr automatisch erstellt.

    Wie es aussieht liegt es an PHP selbst. Eine Wordpress 2.7 Installation zeigt das gleiche Verhalten. Und dort hat es früher funktioniert. Fatal ist, dass damit nach einem Wechsel der PHP-Version, Links auf Artikel mit doppelten Bindestrichen nicht mehr funktionieren. Ein altes PHP zu installieren wäre noch eine Option. Eine direkte Änderung in der Datenbank funktioniert auch nicht. Wenn ich keine Lösung des Problems finde, werde ich auf ein anderes CMS umsteigen. Hättest du einen Tipp, was sich da anbieten würde?

Jetzt mitmachen!

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