2013-01-10 48 views
3

我正在使用Wordpress RSS在我的iOS项目中使用。 Feed中没有缩略图链接,因此我搜索并找到了此代码以将缩略图链接添加到Feed中。使用其他标记添加缩略图到WordPress RSS

/* include thumbnail in RSS feed */ 
function add_thumb_to_RSS($content) { 
    global $post; 
    if (has_post_thumbnail($post->ID)){ 
     $content = '' . get_the_post_thumbnail($post->ID, 'thumbnail') . '' . $content; 
    } 
    return $content; 
} 
add_filter('the_excerpt_rss', 'add_thumb_to_RSS'); 
add_filter('the_content_feed', 'add_thumb_to_RSS') 

该代码添加在饲料中的图片链接,但它在描述标签的开头这样增加了为html代码:

<description> 
<![CDATA[ 
<img width="150" height="150" src="http://www.ipadia.co/wp-content/uploads/2012/02/sayfada-bul-150x150.png" class="attachment-thumbnail wp-post-image" alt="sayfada bul" title="sayfada bul" />Some text some text Some text some text Some text some text Some text some text Some text some text Some text some text .... 
]]> 
</description> 

我要添加图片链接与其他标记像<image><thumb> the link </thumb>。所以我可以更轻松地解析它。

我该怎么做?提前致谢。

回答

6

我解决它终于:)我改变了我之前发布的功能。新的功能是这样的:

add_action('rss2_item', function(){ 
    global $post; 

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

这使得在新标签<post-thumbnail>像我想要的图片链接。

+0

比我的示例更好:) –

2

有在WordPress 2层的功能,可以帮助你在一个非常简单的方法,试试这个:

(int) $id = get_post_thumbnail_id($post->ID); 
$url = wp_get_attachment_url($id); 

编辑:

要修改的饲料,您可以检查this documentation

一个简单选项是直接修改Feed模板,例如:

in file wp-includes/feed-rss2.php(注意,您可以将其他Feed模板修改为“feed-rss.p HP”,‘饲料atom.php’),您可以添加新的标签:

echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> 

<rss version="2.0" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/" 
    xmlns:wfw="http://wellformedweb.org/CommentAPI/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:atom="http://www.w3.org/2005/Atom" 
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/" 
    <?php do_action('rss2_ns'); ?> 
> 

<channel> 
    <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title> 
    <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" /> 
    <link><?php bloginfo_rss('url') ?></link> 
    <description><?php bloginfo_rss("description") ?></description> 
    <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate> 
    <language><?php bloginfo_rss('language'); ?></language> 
    <sy:updatePeriod><?php echo apply_filters('rss_update_period', 'hourly'); ?></sy:updatePeriod> 
    <sy:updateFrequency><?php echo apply_filters('rss_update_frequency', '1'); ?></sy:updateFrequency> 
    <?php do_action('rss2_head'); ?> 
    <?php while(have_posts()) : the_post(); ?> 
    <item> 
     <title><?php the_title_rss() ?></title> 
     <link><?php the_permalink_rss() ?></link> 
     <comments><?php comments_link_feed(); ?></comments> 
     <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> 
     <dc:creator><?php the_author() ?></dc:creator> 
     <?php the_category_rss('rss2') ?> 
     <?php 
      //start modified code to add tag with post thumb url 
      (int) $id = get_post_thumbnail_id($post->ID); 
      $thumb_url = wp_get_attachment_url($id); 
     ?> 
     <thumb><?php echo $thumb_url;?></thumb> 
      <?php //end modified code to add tag with post thumb url ?> 
     <guid isPermaLink="false"><?php the_guid(); ?></guid> 
<?php if (get_option('rss_use_excerpt')) : ?> 
     <description><![CDATA[<?php the_excerpt_rss() ?>]]></description> 
<?php else : ?> 
     <description><![CDATA[<?php the_excerpt_rss() ?>]]></description> 
    <?php if (strlen($post->post_content) > 0) : ?> 
     <content:encoded><![CDATA[<?php the_content_feed('rss2') ?>]]></content:encoded> 
    <?php else : ?> 
     <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded> 
    <?php endif; ?> 
<?php endif; ?> 
     <wfw:commentRss><?php echo esc_url(get_post_comments_feed_link(null, 'rss2')); ?></wfw:commentRss> 
     <slash:comments><?php echo get_comments_number(); ?></slash:comments> 
<?php rss_enclosure(); ?> 
    <?php do_action('rss2_item'); ?> 
    </item> 
    <?php endwhile; ?> 
</channel> 
</rss> 
+0

谢谢你的好回答,非常感谢。我用一个简短的方法解决了问题,并将其作为答案发布。再次感谢你马里奥。 –

相关问题