web-dev-qa-db-fra.com

Comment puis-je ajouter l'image sélectionnée à the_content après le premier paragraphe?

Mon problème:

J'essaie de créer un filtre qui ajoutera l'image sélectionnée d'une publication à the_content, afin que je puisse avoir le premier paragraphe de la_content affiché avant cette image.

Ce que je veux fondamentalement réaliser:

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

Je suis capable de m'aider.

Merci d'avance!

4
Anders

Vous pouvez le faire en utilisant le filtre '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;
}

Bien sûr, vous pouvez ajouter des options à la fonction the_post_thumbnail () pour définir la taille de la vignette que vous souhaitez utiliser, etc. ... http://codex.wordpress.org/Function_Reference/the_post_thumbnail

2
FlashingCursor

Techniquement, la solution la plus rapide consisterait à utiliser un shortcode dans votre contenu. Sinon, vous aurez besoin d'une bonne gestion de regex pour vider l'image entre les paragraphes à l'aide d'un filtre.

Le meilleur moyen serait d’ajouter ceci à functions.php

<?php 

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

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

Après votre premier paragraphe dans le contenu, tapez simplement [featured_image].

1
bgallagh3r

Remarque -

En utilisant une sorte de correspondance de regex, vous pouvez le faire. En voici un. Ajoutez simplement cet extrait dans le fichier functions.php de votre thème afin qu’il imprime le contenu de la variable $img juste après le premier paragraphe (c’est-à-dire après la première occurrence de la balise </p>) dans le contenu de votre publication.

le passage de la vignette actuelle/la valeur de l'image sélectionnée à $ img imprimera cette image après le premier paragraphe.

// 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;
});

Modifié this pour ajouter une variable après le premier paragraphe.

1
amit