Diferenças na prática entre o get_the_content e the_content

Olá queridos leitores, hoje vamos falar de um assunto bem interessante, sobre o content do seu post.

Sabemos que dentro do post (mesmo que seja um Custom Post Type) existe um conteúdo como padrão, aliás temos a estrutura básica:

  • Título
  • Autor
  • Conteúdo
  • Categorias
  • Tags
  • Excerpt (Resumo)
  • Thumbnails (Imagem de destaque)

Mas, em alguma situações, precisamos manipular por alguns motivos esse conteúdo. Pode ser por alguns motivos:

  • Inserir / Remover Ads
  • Formatar
  • Inserir imagens / Conteúdo relacionado
  • Entre outros

the_content()

A função the_content() pega o conteúdo especificado, formatado da forma que você gravou e imprime na tela, com a mesma formatação, obedecendo as tags de html.

<?php the_content(); ?>

get_the_content()

A função get_the_content() pega o conteúdo específico, remove todas as tags <html> e armazena em uma variável (normalmente), sem imprimir na tela

<?php $conteudo = get_the_content(); ?>

Lembrando que quando falo de tags, me refiro a <p>, <strong>, etc…

Removendo IDs do conteúdo

Quem precisa remover uma ID em específico ou mesmo você pode adaptar para uma classe

No arquivo functions.php:

// Aqui colocamos uma função para modificar o content

function conteudo_sem_alguma_id ( $content, $id_remover ) {


    $documento = new DOMDocument();
    $documento ->loadHTML('<?xml encoding="UTF-8">' . $content);
    $elemento = $documento->getElementById($id_remover);
    $elemento->parentNode->removeChild($elemento);
    $content = $documento->saveHTML();


    return $content;
}

Note que eu joguei uma codificação UTF-8 para não termos problema com nossa acentuação.

No seu caso, se tiver problemas com essa codificação, simplesmente remova a codificação modificando a linha para essa:

$documento ->loadHTML($content);

Após isso, no seu tema, no local que desejar usar utilize-o da seguinte forma:

<?php $conteudo = conteudo_sem_alguma_id (get_the_content(), 'anuncio-topo'); 
// Nesse caso, o ID do HTML que quero remover é o anuncio-topo

echo $conteudo;?>

No exemplo acima, ele remove a ID e deixa o texto todo formatado, com os parágrafos, negritos, etc

Deixe uma resposta