Wordpress adicionando automaticamente "& nbsp;"?


12

Não tenho certeza se é o próprio wordpress ou o Tiny MCE que está fazendo isso. Mas ao alternar entre o editor HTML e o Visual, ele adiciona  e adiciona um extra a cada vez que alterno. Eu nem sequer tenho uma quebra de linha no código, parece de alguma forma decidir onde os colocará com base nas tags do meu código html.

O que está causando isso e como faço para corrigi-lo?

Eu já tentei isso no arquivo de funções do modelo:

//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');

2
Na verdade, ele está fazendo isso automaticamente quando você muda de guia, notei isso também e achei muito irritante. Nenhuma pista sobre como corrigi-lo ainda though ...
— Joost de Valk

1
Eu uso o editor HTML quase exclusivamente, colando o código do BBEdit. Parece fazer isso comigo quando eu salvar no WP.
— Goodbye Stack Exchange

bem, eu tenho esse problema também. Quando eu postar manualmente e clicar no botão Enter, ele adicionará um parágrafo para mim. Isso acontece depois que eu instalei o minúsculo MCE. O que você quer dizer com isso de qualquer maneira: Filter tiny_mce_init, para substituir as regras de filtragem de conteúdo padrão

1
Isso está acontecendo comigo nos títulos das postagens no loop. Parece indiscriminado (acontece apenas em alguns caracteres espaciais de algumas postagens).
— Drewdavid

Eu consegui encontrar uma solução fácil para esse problema: wordpress.stackexchange.com/a/291746/135285
— AturSams

Respostas:


2

Tudo o que uso é remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );e isso impede o Wordpress de criar qualquer marcação extra. Você está copiando e colando seu código de um editor externo?


4
não funcionou para mim. Sem usar MCE minúsculo, apenas no HTML cada "update" ainda adiciona novos  s
— Christian

3
Também não funciona para mim
— sidonaldson

4

Descobri que espaços sem quebra estão sendo inseridos quando uso dois espaços após um período. O editor parece interpretar o espaço extra como uma tentativa de minha parte de usar espaços para formatação de texto.

Se eu copiar e colar meu artigo do editor do Wordpress em um editor de texto que suporte exibição hexadecimal (uso o EditPad Pro), vejo que o texto que pensei ser um período seguido por dois espaços é, na realidade, texto seguido por um único espaço, seguido pelo caractere unicode com o código hexadecimal A0, que é o caractere Unicode NO-BREAK SPACE .

Consegui remover o espaço sem interrupção nos artigos existentes, substituindo o espaço seguido pelo caractere NO_BREAK SPACE por apenas um espaço. Na maioria dos editores de texto, você pode fazer isso com a pesquisa e substituição, copiando os "dois espaços" na caixa de texto Localizar e escrevendo um único espaço na caixa Substituir texto.

Consegui evitar o problema daqui para frente digitando apenas um único espaço após um período.


3

O que está causando isso e como faço para corrigi-lo?

Qualquer conteúdo adicionado ou removido do seu Conteúdo da postagem é causado por tiny_mce_init, o que está aplicando, é as regras de filtragem de conteúdo.

As maneiras de evitá-lo são:

  1. Filtro tiny_mce_init, para substituir as regras padrão de filtragem de conteúdo
  2. Pare de alternar entre os editores Visual e HTML . Realmente; a menos que você queira usar a opção nº 1 acima, não alterne entre editores . O WordPress deve ser usado para que o conteúdo seja inserido usando o editor Visual ou HTML , mas não os dois simultaneamente.

Exemplo de uso para o tiny_mce_before_initfiltro no Codex. Outro exemplo de configuração / personalização do TinyMCE no Codex aqui .


11
Tenho certeza de que sua resposta nº 2 está errada. Isso ou alguém "estragou o cão" na interface do usuário. Se o editor foi projetado para ser usado apenas como Visual ou HTML, por que as guias estão lá? Por que não apenas tê-lo como uma opção nas configurações para usá-lo de uma maneira ou de outra? Além disso, as guias estão lá por padrão ... não é um recurso ou opção avançada para desenvolvedor que você precisa configurar. Tenho certeza de que eles pretendiam que os usuários pudessem clicar entre eles e que o problema real é que às vezes eles não funcionam bem juntos. (especialmente no caso de formatação de espaço)
— luckykind 18/11/11

1
@luckykind Não, eles não tinham a intenção de alternar entre eles. Esse é apenas um problema de arquitetura do TinyMCE . E não é o único .
— Kaiser #

3
Você não pode me dizer que uma interface do usuário que oferece guias para alternar entre edição HTML e Visual não se destina a ser usada dessa maneira. É quase 2016 e a questão ainda está lá.
— Eric J.

1
Acho que meu computador não foi projetado para ser ligado, mas como ele possui um botão liga / desliga, nós o ativamos, portanto, todos os problemas são culpa do usuário. O design e o código são impecáveis, obviamente.
— AturSams 21/01

1

Estou usando o Wordpress para um blog em hebraico.

Solução alternativa: copie o texto em um editor como sublime ou bloco de notas ++ e pesquise e substitua por espaços normais. Você pode copiar um deles do texto.

Isenção de responsabilidade: esta não é uma resposta muito grande e mais uma solução alternativa, portanto, fique à vontade para votar. Para mim, o Wordpress está felizmente adicionando nbsp em todos os lugares e sem rima ou razão. Não tenho certeza do que está causando isso. Isso está acontecendo muito com o texto hebraico, muito mais do que com qualquer texto em inglês.


0

Caso ainda haja alguém preso com isso em 2020. Tivemos esse problema depois de migrar um monte de conteúdo para o Wordpress. Adivinhe, todo mundo fez a coisa de copiar e colar e acabamos com muito conteúdo para poder corrigir manualmente. Eu implementei a função php abaixo e a adicionei ao functions.php e resolveu o problema para nós.

    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)

O 999999 é apenas para garantir que esse filtro seja executado por último, caso eles  estejam sendo adicionados em algum lugar no meio.


-1

No arquivo css. Coloque display: inline-flexpara dentro p the excerpt. Os espaços em branco adicionais não incomodam mais. funciona para mim

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.