如何在没有插件的情况下将图片添加到WordPress RSS-Feed?

时间:2014-08-28 作者:zkanoca

我搜索了在没有WordPress插件的情况下向rss提要中添加特色图像。我找到了一些例子并应用了它的指导方式。但我现在什么都没有了。仍然无法访问图像。

最后也是最好的(根据我)解决方案(如所述here) 我发现正在向当前主题添加以下代码functions.php

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\' );
我没有看到任何变化。还有其他事情要做吗?

我想做的是在XML中添加特征图像作为另一个键。在我的滑块上显示它会更容易。

5 个回复
最合适的回答,由SO网友:Robert hue 整理而成

这里有一个很棒的example. 如何在WordPress提要中显示特色帖子缩略图

将此代码段粘贴到主题函数中。php文件

// 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\' );

SO网友:vick

基于这里的注释和我阅读的许多其他资源,我提出了这个解决方案,专门用于使用Mailchimp RSS到电子邮件转换器,并使用Wordpress提供的提要。他们的模板使用<media:content> 扩展到item 元素来填充其图像宏。此代码包含在函数中。主题的php。

// 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] . \'" />\';
    }
  }
});
如果您想要一个较小的图像,则可以选择“中”图像大小“缩略图”。

SO网友:heytricia

我尝试了选择的答案,在我的feed中得到了一个非常大的图像。我建议在代码中添加图像大小。

// 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\' );
我在feed中使用了“缩略图”,但“中等”可能对某些网站更有效。

SO网友:Osmar Lopez

我尝试了上面的这些答案,但没有成功。它不断在描述区域添加我的图像。

我在另一个网站上找到了这个,并对它进行了一些修改,瞧,它开始工作了。

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

SO网友:yofisim

下面是我如何从外部rss提要获取图像以及链接和帖子标题。

<div class="row">

    <?php
    /*
     * Get latest blog entries from RSS feed blog
     * Sort the entries by published date
     * Get Featured Image SRC and ALT attributes using Regexp
     * Loop and repeat it 4 times, to display 4 articles
     */
    $feed = \'https://www.somewpsite.com/feed/\';
    $entries = array();
    $xml = simplexml_load_file($feed);
    $entries = array_merge($entries, $xml->xpath("//item"));
    //Sort feed entries by pubDate
    usort($entries, function ($feed1, $feed2) {
        return strtotime($feed2->pubDate) - strtotime($feed1->pubDate);
    });
    ?>

    <?php
    $counter = 0;
    foreach ($entries as $entry) {
        //get Featured Image
        //Enter entry blog Content
        $blogContent = $entry->description;
        //regexp to find img attribute
        preg_match(\'/(<img[^>]+>)/i\', $blogContent, $matches);
        //store the first img to var
        $featuredImage = $matches[0];
        //Get src attr with regexp
        preg_match(\'@src="([^"]+)"@\', $featuredImage, $getSrc);
        //Get alt attr with regexp
        preg_match(\'@alt="([^"]+)"@\', $featuredImage, $getAlt);
        //Store the filtered Attributes to display them.
        $imgAlt = array_pop($getAlt);
        $imgSrc = array_pop($getSrc);
        // remove url parameters
        $url = $entry->link;
        $url = strtok($url, \'?\');
        //Set counter to iterate over 4 items and then stop the loop.
        if ($counter <= 3) { ?>

            <div class="col-12 col-sm-12 col-md-6 col-lg-3 col-xl-3">
                <div class="imgContainer">
                    <a href="<?php echo $url ?>">
                        <img src="<?php echo $imgSrc ?>" alt="<?php echo $imgAlt; ?>" class="img-fluid">
                    </a>
                </div>
                <h4>
                    <a class="blog-entry-link" href="<?php echo $url ?>"><?= $entry->title ?></a>
                </h4>
            </div>

            <?php
            $counter++;
        } // end counter condition
    }// end for loop ?>
</div>

结束

相关推荐

How to create tag.php

如何创建标记。php模板,将适用于每个包含标签的帖子?我创建了一些标签,如=食物、饮料和水果贴子1有食品和饮料标签帖子2有食物和水果标签如何为这些标签帖子创建一个页面?我的代码看起来像这样,但没有显示任何内容。function get_tags_post($tag_name){ $original_query = $wp_query; $wp_query = null; $brand_name= $tag_name; $args=array(