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?
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.
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!
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
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; }
se quiser remover de uma determinada página ou postar, você pode chamar isso
<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
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
Para remover a tag p do conteúdo, você pode usar o código abaixo
<?php remove_filter ('the_content', 'wpautop'); ?>
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;
}