WordPress aggiunge automaticamente " "?
Non sono sicuro se sia WordPress stesso o TinyMCE a farlo. Ma quando passo tra l'editor HTML e quello Visuale, viene aggiunto
, e ne viene aggiunto uno extra ogni volta che passo da uno all'altro. Non ho nemmeno un'interruzione di riga nel codice, sembra che decida in qualche modo dove posizionarli basandosi sui tag nel mio codice HTML.
Cosa lo sta causando e come posso risolverlo?
Ho già provato questo nel file functions.php del template:
// disabilita auto p
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Rimuovi la formattazione automatica
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');

Ho scoperto che vengono inseriti spazi indivisibili quando uso due spazi dopo un punto. L'editor sembra interpretare lo spazio extra come un mio tentativo di utilizzare spazi per la formattazione del testo.
Se copio e incollo il mio articolo dall'editor di WordPress in un editor di testo che supporta la visualizzazione esadecimale (io uso EditPad Pro), vedo che il testo che pensavo fosse un punto seguito da due spazi è in realtà testo seguito da un singolo spazio, seguito dal carattere Unicode con codice esadecimale A0, che è il carattere Unicode SPAZIO INDIVISIBILE (NO-BREAK SPACE).
Sono riuscito a rimuovere lo spazio indivisibile negli articoli esistenti sostituendo lo spazio seguito dal carattere SPAZIO_INDIVISIBILE con un semplice spazio. Nella maggior parte degli editor di testo, puoi farlo con la funzione cerca e sostituisci copiando i "due spazi" nella casella di testo Trova e scrivendo un singolo spazio nella casella di testo Sostituisci.
Sono riuscito a evitare il problema in futuro digitando solo un singolo spazio dopo un punto.

Cosa lo causa e come posso risolverlo?
Qualsiasi contenuto aggiunto o rimosso dal tuo Post Content è causato da tiny_mce_init
, che applica le sue regole di filtraggio del contenuto.
I modi per prevenirlo sono:
- Filtrare
tiny_mce_init
, per sovrascrivere le regole predefinite di filtraggio del contenuto - Smetti di passare tra l'editor Visuale e HTML. Seriamente; a meno che tu non voglia utilizzare l'opzione #1 sopra, non passare tra gli editor. WordPress è progettato per essere utilizzato in modo che il contenuto venga inserito utilizzando l'editor Visuale o HTML, ma non entrambi contemporaneamente.
Esempio d'uso per il filtro tiny_mce_before_init
nel Codex. Un altro esempio di configurazione/personalizzazione di TinyMCE nel Codex qui.

Sono abbastanza sicuro che la tua risposta #2 sia sbagliata. O qualcuno ha "fatto un pasticcio" con l'interfaccia utente.
Se l'editor era pensato per essere usato solo in modalità Visuale o HTML, perché avere le schede lì in primo luogo? Perché non renderlo semplicemente un'opzione nelle impostazioni per usarlo in un modo o nell'altro?
Inoltre, le schede sono lì di default... non è una funzione avanzata per sviluppatori o un'opzione che devi configurare. Sono abbastanza sicuro che fossero pensate per permettere agli utenti di cliccare avanti e indietro tra le due modalità e che il vero problema sia che a volte non funzionano bene insieme (specialmente nel caso della formattazione degli spazi).

@luckykind No, non erano pensate per passare avanti e indietro tra le due modalità. È solo un problema architettonico di TinyMCE. Ed è non l'unico.

Non puoi dirmi che un'interfaccia utente che offre schede per passare avanti e indietro tra l'editing HTML e Visuale non sia pensata per essere usata in quel modo. È quasi il 2016 e il problema è ancora lì.

Nel caso ci sia ancora qualcuno bloccato con questo problema nel 2020. Abbiamo avuto questo problema dopo aver migrato un sacco di contenuti su WordPress. Indovinate un po', tutti hanno fatto copia e incolla e ci siamo ritrovati con troppi contenuti per poterli correggere manualmente. Ho implementato la funzione PHP qui sotto e l'ho aggiunta a functions.php, risolvendo il problema per noi.
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)
Il 999999 serve solo per assicurarsi che questo filtro venga eseguito per ultimo, nel caso in cui questi
vengano aggiunti da qualche parte nel mezzo.

Sto utilizzando WordPress per un blog in ebraico.
Soluzione alternativa: Copia il testo in un editor come Sublime o Notepad++ e sostituisci gli spazi con spazi normali. Puoi copiarne uno dal testo.
Disclaimer: questa non è tanto una risposta quanto una soluzione alternativa, quindi sentiti libero di votare negativamente. Per quanto mi riguarda, WordPress aggiunge continuamente spazi indivisibili (nbsp) ovunque e senza alcun motivo apparente. Non sono sicuro di cosa lo causi. Succede molto più frequentemente con il testo in ebraico rispetto a qualsiasi testo in inglese.
