web-dev-qa-db-fra.com

Comment ajouter une image à un flux RSS Wordpress sans plug-in?

J'ai cherché à ajouter une image mettant en vedette au flux RSS sans plug-in pour WordPress. J'ai trouvé des exemples et appliqué comment cela a été instruit. Mais tout ce que j'ai maintenant n'est rien. Je n'arrive toujours pas à atteindre l'image.

La dernière et la meilleure solution (selon moi) (comme dit ici ) que j'ai trouvée consiste à ajouter le code suivant au functions.php du thème actuel

function featured_image_in_feed( $content ) {
    global $post;
    if( is_feed() ) {
        if ( has_post_thumbnail( $post->ID ) ){
            $output = get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => 'float:right; margin:0 0 10px 10px;' ) );
            $content = $output . $content;
        }
    }
    return $content;
}
add_filter( 'the_content', 'featured_image_in_feed' );

Je n'ai vu aucun changement. Y a-t-il autre chose à faire?

Ce que je veux faire, c’est d’ajouter l’image vedette comme une autre clé du code XML. Il serait plus facile de le montrer pour mon curseur.

5
zkanoca

Voici un excellent exemple . Comment afficher les miniatures des publications en vedette dans les flux WordPress

collez cet extrait de code dans le fichier functions.php de votre thème

// display featured post thumbnails in WordPress feeds
function wcs_post_thumbnails_in_feeds( $content ) {
    global $post;
    if( has_post_thumbnail( $post->ID ) ) {
        $content = '<p>' . get_the_post_thumbnail( $post->ID ) . '</p>' . $content;
    }
    return $content;
}
add_filter( 'the_excerpt_rss', 'wcs_post_thumbnails_in_feeds' );
add_filter( 'the_content_feed', 'wcs_post_thumbnails_in_feeds' );
8
Robert hue

Sur la base des notes ici et de nombreuses autres ressources que j'ai lues, j'ai proposé cette solution spécifiquement pour travailler avec Mailchimp RSS au convertisseur de courrier électronique avec le flux de Wordpress. Leurs modèles utilisent l'extension <media:content> de l'élément item pour remplir leur macro d'image. Ce code va dans le functions.php du thème.

// Add namespace for media:image element used below
add_filter( 'rss2_ns', function(){
  echo 'xmlns:media="http://search.yahoo.com/mrss/"';
});

// insert the image object into the RSS item (see MB-191)
add_action('rss2_item', function(){
  global $post;
  if (has_post_thumbnail($post->ID)){
    $thumbnail_ID = get_post_thumbnail_id($post->ID);
    $thumbnail = wp_get_attachment_image_src($thumbnail_ID, 'medium');
    if (is_array($thumbnail)) {
      echo '<media:content medium="image" url="' . $thumbnail[0]
        . '" width="' . $thumbnail[1] . '" height="' . $thumbnail[2] . '" />';
    }
  }
});

Le choix de la taille de l'image "moyen" peut également être "miniature" si vous souhaitez en réduire la taille.

2
vick

J'ai essayé la réponse choisie et j'ai eu une très grande image dans mon flux. Je recommanderais d'ajouter une taille d'image au code.

// display featured post thumbnails in RSS feeds
function WPGood_rss_thumbs( $content ) {
    global $post;
    if( has_post_thumbnail( $post->ID ) ) {
        $content = '<figure>' . get_the_post_thumbnail( $post->ID, 'thumbnail' ) . '</figure>' . $content;
    }
    return $content;
}
add_filter( 'the_excerpt_rss', 'WPGood_rss_thumbs' );
add_filter( 'the_content_feed', 'WPGood_rss_thumbs' );

J'ai utilisé "miniature" pour mon flux, mais "moyen" pourrait fonctionner mieux pour certains sites.

2
heytricia

J'ai essayé ces réponses ci-dessus et je n'ai pas réussi à le faire fonctionner. Il continuait à ajouter mon image dans la zone de description.

J'ai trouvé cela sur un autre site et je l'ai modifié un peu et le tour est joué.

add_action('rss2_item', function(){
global $post;
 if(has_post_thumbnail($post->ID)){
  $output = '';
  $thumbnail_ID = get_post_thumbnail_id( $post->ID );
  $thumbnail = wp_get_attachment_image_src($thumbnail_ID, 'thumbnail');
  $output .= '<post-thumbnail>';
  $output .= '<url>'. $thumbnail[0] .'</url>';
  $output .= '<width>'. $thumbnail[1] .'</width>';
  $output .= '<height>'. $thumbnail[2] .'</height>';
  $output .= '</post-thumbnail>';

  echo $output;
 }
});
0
Osmar Lopez