web-dev-qa-db-pt.com

remover tags <p> do the_content

Eu tenho um formato de postagem de Imagem e estou com um problema em que a imagem está sendo envolvida por uma tag <p>. Eu quero me livrar dessa tag (especificamente na versão single.php) desses tipos de postagem.

Como posso entrar na formatação de um tema e remover as tags <p> ou criar qualquer formato que eu queira para a saída desse tipo de postagem, sem afetar as postagens de um formato de postagem diferente?

6
Smittles

O Wordpress exibe automaticamente as tags <p> no conteúdo. Por isso, aparece durante o carregamento do conteúdo. Isso é com o filtro wpautop. Portanto, removeremos esse filtro apenas para o tipo de postagem image. Você pode gerenciar isso adicionando o seguinte código no arquivo functions.php.

// Add the filter to manage the p tags
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );

function wti_remove_autop_for_image( $content )
{
     global $post;

     // Check for single page and image post type and remove
     if ( is_single() && $post->post_type == 'image' )
          remove_filter('the_content', 'wpautop');

     return $content;
}

is_single() verifica se uma única postagem está sendo exibida.

8
Chittaranjan

Se esse tipo de postagem for chamado de "imagem", você poderá criar um modelo único para manipular a exibição apenas do tipo de postagem da imagem.

Apenas copie o arquivo 'single.php' e renomeie a cópia 'single-image.php'. Agora você pode controlar apenas as postagens de imagem. Para remover tags, gosto de usar a função strip_tags(). Se você imprimir o conteúdo da postagem com the_content(), ele já aplicará o filtro de conteúdo, envolvendo linhas em <p> tags.

Aqui está um exemplo de como você pode obter o conteúdo da sua imagem sem as tags:

$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<p> <a>'); //replace <p> and <a> with whatever tags you want to keep after the strip
echo $stripped;

Espero que isto ajude!

4
CreMedian

Basta adicionar abaixo da linha de código no arquivo functions.php do seu tema

Para o conteúdo:

remove_filter( 'the_content', 'wpautop' );

Para trecho

remove_filter( 'the_excerpt', 'wpautop' );

saiba mais: https://codex.wordpress.org/Function_Reference/wpautop

2
Saiful Islam

Você pode usar uma classe de postagem específica para single-post ou single-format-standard e fazer com que ela se esconda conforme necessário em uma única página, para que não haja conflito em outras partes do site.

Exemplo de código CSS *

.single-post .entry-content p:empty { display: none; }

Exemplo de código CSS para um formato específico de postagem Image

.single-format-image .entry-content p:empty { display: none; }
0
Maqk

se quiser remover de uma determinada página ou postar, você pode chamar isso

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
0
Muddasir

Você pode usar get_the_content() em vez de the_content(). Isso pode resolver o seu problema e outra solução é a mesma descrita pelo @Chittaranjan

0
Subhojit Mukherjee

Para remover a tag p do conteúdo, você pode usar o código abaixo

<?php remove_filter ('the_content', 'wpautop'); ?>
0
Rahul S

Outra maneira de codificá-lo com base na solução de @chittaranjan

add_filter( 'the_content', 'remove_autop_for_image', 0 );

function remove_autop_for_image( $content ) {
     global $post;

     if ( is_singular('image'))
          remove_filter('the_content', 'wpautop');

     return $content;
}
0
Brad Dalton