Como adiciono a imagem em destaque ao the_content após o primeiro parágrafo?

4

Meu problema:

Estou tentando criar um filtro que adicionará a imagem em destaque de uma postagem ao the_content, para que eu possa ter o primeiro parágrafo de the_content exibido antes dessa imagem.

O que eu quero basicamente alcançar:

<p>First Paragraph of the_content</p>
<img>The Post's Featured Image</img>
<p>The rest of the_content</p>

Eu alguém pode me ajudar.

Obrigado antecipadamente!

    
por Anders 09.08.2012 / 03:08

3 respostas

2

Você pode fazer isso usando o filtro "the_content":

add_filter( 'the_content', 'insert_featured_image', 20 );

function insert_featured_image( $content ) {

    $content = preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID, 'post-single'), $content, 1 );
    return $content;
}

Claro, você pode adicionar opções à função the_post_thumbnail () para definir o tamanho da miniatura que deseja usar, etc ... enlace

    
por FlashingCursor 09.08.2012 / 04:13
1

Tecnicamente, a solução mais rápida seria usar um shortcode no seu conteúdo. Caso contrário, você precisará de um bom controle sobre o regex para despejar a imagem entre parágrafos usando um filtro.

A melhor maneira seria adicionar isso a functions.php

<?php 

function featured_image($post) {
    if (has_post_thumbnail($post->id))
        the_post_thumbnail('large');
}

add_shortcode('featured_image', 'featured_image');
?>

Após seu primeiro parágrafo no conteúdo, basta digitar [featured_image] .

    
por bgallagh3r 09.08.2012 / 03:21
1

Nota -

Usando algum tipo de regex correspondente, você pode fazer isso. Aqui está um deles. Basta inserir este snippet no arquivo functions.php do seu tema para que ele imprima o conteúdo da variável $img logo após o primeiro parágrafo (ou seja, após a primeira ocorrência de </p> tag) no conteúdo do seu post.

passar a miniatura das postagens atuais / valor da imagem em destaque para $ img imprimirá essa imagem após o primeiro parágrafo.

// Goes into functions.php file
// Adds $img content after after first paragraph (!.e. after first '</p>' tag)
add_filter('the_content', function($content)
{
   $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
   $img = '<img src="'.$url.'" alt="" title=""/>';
   $content = preg_replace('#(<p>.*?</p>)#','$1'.$img, $content, 1);
   return $content;
});

Modificado este para acrescentar variável após o primeiro parágrafo.

    
por amit 09.08.2012 / 03:50