Wordpress remover tags p?

4

Eu já encontrei um caso em que o Wordpress adicionou <p> tags. No entanto, agora estou lidando com a situação oposta. Quando eu adiciono [] códigos de acesso dentro das tags <p> , o WordPress remove automaticamente as tags <p> .

<p>[anyshortcode]Hello World[/anyshortcode]</p>

Torna-se:

Hello World

Adicionar dir="ltr" a <p> tags parece corrigir o problema, talvez haja uma maneira de adicioná-lo de forma programática a todas as tags <p> ?

Alguma idéia de como corrigir isso?

    
por Lisandro Vaccaro 14.03.2014 / 14:34

4 respostas

4

Isso é basicamente o que Foxsk8 mencionou em um comentário, então o crédito deve ser dado a ele, mas essas instruções adicionais serão úteis. O plugin WordPress chamado TinyMCE Advanced irá resolver o seu problema.

Este plugin vem com uma opção dentro de Settings > TinyMCE Advanced que irá corrigir suas tags <p> . Marque a caixa de seleção rotulada Stop removing the <p> and <br /> tags when saving and show them in the Text editor e suas tags <p> serão preservadas.

    
por E. Serrano 13.12.2014 / 19:47
1

O TinyMCE é programado para facilitar a edição (o que, para nós, o conhecimento em HTML geralmente não é o caso). Por padrão, não deve aceitar a marcação <p> em torno de [BLOCKS]. Isso porque "[]" são usados para shortcode não apenas no WP, mas em uma tonelada de CMSs baseados em PHP. Os códigos de acesso devem ter o wrapper de conteúdo apropriado.

Significando que a solução é adicionar as tags <p> em seu código de código de modo que seu conteúdo seja agrupado da maneira desejada.

    
por STing 23.09.2014 / 20:16
0

Você pode adicionar este código abaixo em seu arquivo function.php

function content_formatter($content){

    $new_content = '';
    $pattern_full = '{(\[raw\].*?\[/raw\])}is';
    $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

    foreach ($pieces as $piece) {
            if (preg_match($pattern_contents, $piece, $matches)) {
                    $new_content .= $matches[1];
            } else {
                    $new_content .= wptexturize(wpautop($piece));
            }
    }

    $array = array(
            '<p>[' => '[',
            ']</p>' => ']',
            ']<br />' => ']'
    );

    $new_content = strtr($new_content, $array);

    return $new_content;

}

Agora, chame esta função sempre que necessário, como

<?php echo content_formatter( get_field('field_name') ); ?>
    
por Mrudang Shah 23.05.2016 / 08:45
-1

Anexe isto ao seu arquivo functions.php dentro da pasta do seu tema.

remove_filter( 'the_content', 'wpautop' );
    
por Jack Tuck 14.03.2014 / 19:54