Wordpress automatisch hinzufügen "& nbsp;"?

12

Ich bin nicht sicher, ob WordPress selbst oder Tiny MCE das tut. Aber wenn  ich zwischen HTML und Visual Editor wechsle , wird jedes Mal, wenn ich hin und her wechsle , eine neue hinzugefügt. Ich habe nicht einmal einen Zeilenumbruch im Code, es scheint irgendwie zu entscheiden, wo es sie basierend auf den Tags in meinem HTML-Code platzieren möchte.

Was ist die Ursache und wie behebe ich das?

Ich habe dies bereits in der Template-Funktionsdatei ausprobiert:

//disable auto p
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Remove auto formatting
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');
Dave
quelle
2
Dies geschieht automatisch, wenn Sie zwischen den Registerkarten wechseln. Ich habe es auch bemerkt und fand es sehr ärgerlich. Noch keine Ahnung, wie das Problem behoben werden kann ...
Joost de Valk
1
Ich benutze fast ausschließlich den HTML-Editor und füge dort Code von BBEdit ein. Es scheint mir das zu tun, wenn ich in WP speichere.
Auf Wiedersehen Stack Exchange
Nun, ich habe auch dieses Problem. Wenn ich manuell poste und auf die Eingabetaste klicke, wird ein Absatz für mich hinzugefügt. Dies geschieht, nachdem ich winzige mce installiert habe. Was meinen Sie damit überhaupt: Filtern Sie tiny_mce_init, um die Standardregeln für die Inhaltsfilterung zu überschreiben
1
Das passiert mir bei Post-Titeln in der Schleife. Scheint wahllos (kommt nur bei einigen Leerzeichen einiger Posts vor).
Drewdavid
Ich habe es geschafft, eine einfache Lösung für dieses Problem zu finden: wordpress.stackexchange.com/a/291746/135285
wolfdawn

Antworten:

2

Alles, was ich benutze, ist, remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );dass Wordpress keine zusätzlichen Markups erstellt. Kopieren Sie Ihren Code aus einem externen Editor und fügen Sie ihn ein?

Matthew Xerri
quelle
4
hat bei mir nicht funktioniert. Ohne Tiny MCE, nur in HTML, fügt jedes "Update" noch neue  s hinzu
Christian
3
Funktioniert auch nicht für mich
Sidonaldson
4

Ich habe festgestellt, dass nicht unterbrechende Leerzeichen eingefügt werden, wenn ich nach einem Punkt zwei Leerzeichen verwende. Der Editor scheint den zusätzlichen Platz als Versuch zu interpretieren, Leerzeichen für die Textformatierung zu verwenden.

Wenn ich meinen Artikel aus dem Wordpress-Editor in einen Texteditor kopiere, der Hex-Anzeige unterstützt (ich verwende EditPad Pro), sehe ich, dass Text, von dem ich dachte, er sei ein Punkt, gefolgt von zwei Leerzeichen, in Wirklichkeit Text ist, gefolgt von einem einzelnen Leerzeichen, gefolgt vom Unicode-Zeichen mit dem Hex-Code A0, dem Unicode - Zeichen NO-BREAK SPACE .

Ich konnte das nicht unterbrechende Leerzeichen in vorhandenen Artikeln entfernen, indem ich das Leerzeichen gefolgt vom Zeichen NO_BREAK SPACE durch ein Leerzeichen ersetzte. In den meisten Texteditoren sollten Sie dies mit Suchen & Ersetzen tun können, indem Sie die "zwei Leerzeichen" in das Textfeld Suchen kopieren und ein einzelnes Leerzeichen in das Textfeld Ersetzen schreiben.

Ich konnte das Problem in Zukunft vermeiden, indem ich nach einem bestimmten Zeitraum nur ein Leerzeichen eintippte.

Eric J.
quelle
3

Was ist die Ursache und wie behebe ich das?

Jeglicher Inhalt, der zu Ihrem Beitragsinhalt hinzugefügt oder daraus entfernt wird, wird durch tiny_mce_initdie Inhaltsfilterungsregeln von verursacht .

Die Möglichkeiten, dies zu verhindern, sind:

  1. Filtern tiny_mce_init, um die Standardregeln für die Inhaltsfilterung zu überschreiben
  2. Beenden Sie den Wechsel zwischen visuellen und HTML-Editoren . Ja wirklich; Wechseln Sie nicht zwischen den Editoren , es sei denn, Sie möchten Option 1 oben verwenden . WordPress ist so zu verwenden, dass der Inhalt mit dem visuellen oder dem HTML- Editor eingegeben wird , jedoch nicht mit beiden gleichzeitig.

Beispielgebrauch für den tiny_mce_before_initFilter im Codex. Ein weiteres Beispiel für die Konfiguration / Anpassung von TinyMCE in Codex finden Sie hier .

Chip Bennett
quelle
11
Ich bin mir ziemlich sicher, dass Ihre Antwort 2 falsch ist. Das oder jemand "hat das Hündchen verarscht" auf der Benutzeroberfläche. Wenn der Editor nur als Visual oder HTML verwendet werden sollte, warum sind die Registerkarten überhaupt vorhanden? Warum haben Sie es nicht als Option in den Einstellungen, um es auf die eine oder andere Weise zu verwenden? Außerdem sind die Registerkarten standardmäßig vorhanden. Es handelt sich nicht um eine erweiterte Funktion oder Option für Entwickler, die Sie einrichten müssen. Ich bin mir ziemlich sicher, dass sie für Benutzer gedacht sind, die zwischen ihnen hin und her klicken können, und dass das eigentliche Problem darin besteht, dass sie manchmal nicht gut zusammenarbeiten. (vor allem im Fall der Raum Formatierung)
Luckykind
1
@luckykind Nein, sie wollten nicht zwischen ihnen hin und her wechseln. Das ist nur ein TinyMCE- Architekturproblem. Und es ist nicht der einzige .
Kaiser
3
Sie können mir nicht sagen, dass eine Benutzeroberfläche, die Registerkarten zum Hin- und Herwechseln zwischen HTML- und visueller Bearbeitung bietet, nicht für diese Verwendung vorgesehen ist. Es ist fast 2016 und die Ausgabe ist immer noch da.
Eric J.
1
Ich glaube, mein Computer war nicht zum Einschalten gedacht, aber da er einen Netzschalter hat, haben wir ihn eingeschaltet, sodass alle Probleme vom Benutzer verursacht werden. Das Design und der Code sind offensichtlich einwandfrei.
Wolfdawn
1

Ich benutze Wordpress für ein hebräisches Blog.

Umgehung: Kopieren Sie den Text in einen Editor wie sublime oder notepad ++ und suchen und ersetzen Sie ihn durch normale Leerzeichen. Sie können eine davon aus dem Text kopieren.

Haftungsausschluss: Dies ist keine wirkliche Antwort und eher eine Problemumgehung. Für mich ist Wordpress glücklich, überall und ohne Reim oder Grund nbsp hinzuzufügen. Nicht sicher, was es verursacht. Es passiert viel mehr mit hebräischem Text als mit irgendeinem englischen Text.

wolfdawn
quelle
0

Für den Fall, dass es im Jahr 2020 noch jemanden gibt, der daran festhält. Wir hatten dieses Problem, nachdem wir eine Reihe von Inhalten auf Wordpress migriert hatten. Ratet mal, jeder hat das Kopieren und Einfügen gemacht und wir haben am Ende viel zu viel Inhalt, um ihn manuell reparieren zu können. Ich habe die PHP-Funktion unten implementiert und sie zu functions.php hinzugefügt und das Problem für uns gelöst.

    function replace_content($content) {
        $content = htmlentities($content, null, 'utf-8');
        $content = str_replace(" ", " ", $content);
        $content = html_entity_decode($content);
    return $content;
    }
    add_filter('the_content','replace_content', 999999999)

Der 999999 soll nur sicherstellen, dass dieser Filter zuletzt ausgeführt wird, falls diese  irgendwo in der Mitte hinzugefügt werden.

Bruno
quelle
-1

In der CSS-Datei. Ins display: inline-flexInnere legen the excerpt. Die zusätzlichen Leerzeichen stören nicht mehr. funktioniert bei mir

Victor Montes de Oca
quelle