Wordpress automatycznie dodaje „& nbsp;”?

12

Nie jestem pewien, czy robi to samo Wordpress czy Tiny MCE. Ale podczas przełączania między edytorem HTML a edytorem wizualnym dodaje się go  i dodaje za każdym razem, gdy przełączam się tam iz powrotem. Nie mam nawet podziału wiersza w kodzie, wydaje się, że w jakiś sposób decyduje, gdzie chce je umieścić na podstawie znaczników w moim kodzie HTML.

Co to powoduje i jak to naprawić?

Próbowałem już tego w pliku funkcji szablonu:

//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
źródło
2
W rzeczywistości robi to automatycznie po przełączeniu kart. Zauważyłem to również i uznałem za bardzo denerwujące. Nie ma jednak pojęcia, jak to naprawić ...
Joost de Valk
1
Korzystam z edytora HTML prawie wyłącznie, wklejając tam kod z BBEdit. Wydaje mi się, że to robi, kiedy zapisuję w WP.
Goodbye Stack Exchange
też mam ten problem. Gdy opublikuję ręcznie i kliknę przycisk Enter, doda mi akapit. Dzieje się tak po zainstalowaniu małego mce. Co i tak przez to rozumiesz: Filtruj tiny_mce_init, aby przesłonić domyślne reguły filtrowania treści
1
Dzieje się tak w przypadku tytułów postów w pętli. Wydaje się bezkrytyczny (dzieje się to tylko na niektórych znakach spacji niektórych postów).
Drewdavid,
Udało mi się znaleźć łatwe obejście tego problemu: wordpress.stackexchange.com/a/291746/135285
AturSams

Odpowiedzi:

2

Używam tylko remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );tego, co powstrzymuje Wordpress przed tworzeniem dodatkowych znaczników. Czy kopiujesz i wklejasz swój kod z zewnętrznego edytora?

Matthew Xerri
źródło
4
nie działało dla mnie. Bez użycia Tiny MCE, tylko w HTML każda „aktualizacja” wciąż dodaje nowe  s
Christian
3
Też mi nie działa
sidonaldson,
4

Odkryłem, że wstawiane są spacje nierozdzielające, gdy używam dwóch spacji po kropce. Wydaje się, że edytor interpretuje dodatkową przestrzeń jako próbę użycia spacji do formatowania tekstu.

Jeśli skopiuję i wkleję mój artykuł z edytora Wordpress do edytora tekstowego obsługującego wyświetlanie szesnastkowe (używam EditPad Pro), widzę, że tekst, który moim zdaniem jest kropką, po którym następują dwie spacje, w rzeczywistości jest tekst, a po nim pojedynczy spacja, po której następuje znak Unicode z kodem szesnastkowym A0, który jest znakiem Unicode SPACE NO-BREAK .

Udało mi się usunąć nieprzerwaną spację w istniejących artykułach, zastępując spację, a następnie znak SPACJA NO_BREAK tylko spacją. W większości edytorów tekstu powinieneś być w stanie to zrobić za pomocą funkcji wyszukiwania i zamiany poprzez skopiowanie „dwóch spacji” do pola tekstowego Znajdź i wpisanie pojedynczej spacji w polu tekstowym Zamień.

Byłem w stanie uniknąć tego problemu, pisząc tylko kropkę po kropce.

Eric J.
źródło
3

Co to powoduje i jak to naprawić?

Wszelkie treści dodawane lub usuwane z treści postów są powodowane przez tiny_mce_initobowiązujące reguły filtrowania treści.

Sposoby, aby temu zapobiec:

  1. Filtruj tiny_mce_init, aby zastąpić domyślne reguły filtrowania treści
  2. Przestań przełączać między edytorami Visual i HTML . Naprawdę; chyba że chcesz użyć opcji nr 1 powyżej, nie przełączaj się między edytorami . WordPress jest przeznaczony do użycia w taki sposób, że treść jest wprowadzana za pomocą edytora Visual lub HTML , ale nie jednocześnie.

Przykład zastosowania tiny_mce_before_initfiltra w Codex. Kolejny przykład konfiguracji / dostosowywania TinyMCE w Kodeksie tutaj .

Chip Bennett
źródło
11
Jestem prawie pewien, że twoja odpowiedź nr 2 jest nieprawidłowa. To lub ktoś „wkręcił kundla” na interfejsie użytkownika. Jeśli edytor miał być używany tylko jako Visual lub HTML, to po co w ogóle są tam Tabs? Dlaczego nie mieć go jako opcji w ustawieniach, aby używać go w ten czy inny sposób? Co więcej, zakładki są tam domyślnie ... to nie jest jakaś zaawansowana funkcja programisty lub opcja, którą musisz skonfigurować. Jestem prawie pewien, że są przeznaczone dla użytkowników, którzy mogą klikać w tę iz powrotem, a prawdziwym problemem jest to, że czasami nie działają dobrze razem. (szczególnie w przypadku formatowania przestrzeni)
luckykind
1
@luckykind Nie, nie mieli zamiaru przełączać się między nimi. To tylko problem architektoniczny TinyMCE . I to nie jedyny .
kaiser
3
Nie możesz mi powiedzieć, że interfejs użytkownika, który oferuje karty do przełączania się pomiędzy HTML i edytowaniem wizualnym, nie jest przeznaczony do użycia w ten sposób. Jest prawie 2016 r., A problem nadal występuje.
Eric J.,
1
Myślę, że mój komputer nie miał być włączony, ale ponieważ ma przycisk zasilania, włączyliśmy go, więc wszystkie problemy są winą użytkownika. Projekt i kod są oczywiście bezbłędne.
AturSams
1

Używam Wordpress do hebrajskiego bloga.

Obejście: Skopiuj tekst do edytora, takiego jak sublime lub notepad ++, a następnie wyszukaj i zamień na normalne spacje. Możesz skopiować jeden z nich z tekstu.

Oświadczenie: nie jest to zbyt duża odpowiedź, a raczej obejście, więc nie krępuj się głosować. Dla mnie Wordpress szczęśliwie dodaje nbsp wszędzie i bez rymu i powodu. Nie jestem pewien, co go powoduje. Dzieje się tak z tekstem hebrajskim, znacznie więcej niż z tekstem angielskim.

AturSams
źródło
0

W przypadku, gdy ktoś nadal utknął z tym w 2020 roku. Ten problem wystąpił po migracji wielu treści do Wordpress. Zgadnij, co wszyscy zrobili, kopiując i wklejając, a skończyło się na zbyt dużej zawartości, aby móc to naprawić ręcznie. Zaimplementowałem poniżej funkcję php i dodałem ją do functions.php i rozwiązało to dla nas problem.

    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)

999999 ma tylko upewnić się, że ten filtr będzie działał jako ostatni, na wypadek, gdyby  zostały dodane gdzieś pośrodku.

Bruno
źródło
-1

W pliku css. Włóż display: inline-flexp do środka the excerpt. Dodatkowe białe pola już nie przeszkadzają. pracuje dla mnie

Victor Montes de Oca
źródło