¿WordPress agrega automáticamente " "?
No estoy seguro si es WordPress en sí o TinyMCE quien lo está haciendo. Pero al cambiar entre el editor HTML y Visual está agregando
, y añade uno extra cada vez que cambio de uno a otro. Ni siquiera tengo un salto de línea en el código, parece que de alguna manera está decidiendo dónde quiere colocarlos basándose en las etiquetas en mi código HTML.
¿Qué está causando esto y cómo lo puedo arreglar?
Ya he intentado esto en el archivo de funciones de la plantilla:
//desactivar auto p
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Eliminar formato automático
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');

Descubrí que se insertan espacios irrompibles cuando uso dos espacios después de un punto. El editor parece interpretar el espacio adicional como un intento de mi parte de usar espacios para formatear el texto.
Si copio y pego mi artículo desde el editor de Wordpress en un editor de texto que admita visualización hexadecimal (yo uso EditPad Pro), veo que el texto que pensé que era un punto seguido de dos espacios en realidad es texto seguido de un solo espacio, seguido del carácter Unicode con el código hexadecimal A0, que es el carácter ESPACIO DE NO SEPARACIÓN Unicode.
Pude eliminar el espacio de no separación en artículos existentes reemplazando el espacio seguido del carácter ESPACIO DE NO SEPARACIÓN por solo un espacio. En la mayoría de los editores de texto, deberías poder hacerlo con buscar y reemplazar copiando los "dos espacios" en el cuadro de texto Buscar y escribiendo un solo espacio en el cuadro de texto Reemplazar.
Pude evitar el problema en el futuro simplemente escribiendo un solo espacio después de un punto.

¿Qué está causando esto y cómo lo soluciono?
Cualquier contenido agregado o eliminado de tu Contenido de Entrada es causado por tiny_mce_init
, el cual está aplicando sus reglas de filtrado de contenido.
Las formas de prevenirlo son:
- Filtrar
tiny_mce_init
, para anular las reglas predeterminadas de filtrado de contenido - Deja de alternar entre los editores Visual y HTML. En serio; a menos que quieras usar la opción #1 anterior, no cambies entre editores. WordPress está diseñado para usarse de manera que el contenido se ingrese usando el editor Visual o el HTML, pero no ambos simultáneamente.
Ejemplo de uso para el filtro tiny_mce_before_init
en el Codex. Otro ejemplo de configuración/personalización de TinyMCE en el Codex aquí.

Estoy bastante seguro de que tu respuesta #2 es incorrecta. Eso o alguien "metió la pata" en la interfaz de usuario.
Si el editor estaba destinado a usarse solo en modo Visual o HTML, ¿por qué tener las pestañas ahí en absoluto? ¿Por qué no simplemente tenerlo como una opción en los ajustes para usarlo de una forma u otra?
Además, las pestañas están ahí por defecto... no es una característica avanzada para desarrolladores o una opción que tengas que configurar. Estoy bastante seguro de que estaban destinadas a que los usuarios pudieran hacer clic de un lado a otro y que el problema real es que a veces no funcionan bien juntas (especialmente en el caso del formato de espacios).

@luckykind No, no estaban destinadas a cambiar de un lado a otro. Eso es solo un problema arquitectónico de TinyMCE. Y es no el único.

No puedes decirme que una interfaz de usuario que ofrece pestañas para cambiar entre edición HTML y Visual no estaba destinada a usarse de esa manera. Ya casi es 2016 y el problema sigue ahí.

Por si hay alguien que todavía tenga este problema en 2020. Nosotros tuvimos este inconveniente después de migrar un montón de contenido a WordPress. ¿Adivinen qué? Todos hicieron copiar y pegar y terminamos con demasiado contenido como para poder corregirlo manualmente. Implementé la función PHP que aparece abajo, la agregué al archivo functions.php y resolvió el problema para nosotros.
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)
El 999999 es solo para asegurarse de que este filtro se ejecute al final, en caso de que estos
se estén agregando en algún punto intermedio.

Estoy usando WordPress para un blog en hebreo.
Solución alternativa: Copia el texto en un editor como Sublime o Notepad++ y busca y reemplaza los espacios con espacios normales. Puedes copiar uno de ellos del texto.
Aviso: esto no es tanto una respuesta como una solución alternativa, así que siéntete libre de votar en contra. En mi caso, WordPress está agregando espacios de no separación (nbsp) por todas partes y sin motivo aparente. No estoy seguro de qué lo está causando. Esto ocurre mucho con el texto en hebreo, mucho más que con cualquier texto en inglés.
