Wordpress:将后期图像的缩略图添加到RSS源

时间:2015-02-04 14:55:32

标签: wordpress rss thumbnails

我们正在主页的新闻栏中显示Wordpress网站的最新帖子。因为我们希望每个帖子的第一张图片都显示在新闻栏中,所以我们会在Feed中输出完整的帖子内容。问题在于,由于帖子使用完整大小的图片,因此Feed包含指向这些内容的链接,虽然它们在新闻框中显示为缩略图大小,但每张图片的大小最多可达300k,这会影响到加载我们的主页。

由于我们只在新闻框中显示每个帖子的片段,理想情况下我们想要一个仅显示帖子提取和第一张图片的Feed,但是缩放尺寸,而不是完整尺寸的图片。

我们的服务器(IBM iSeries)也慢慢运行Wordpress,因此我们可以采取的任何措施来减少数据量和图像大小,这有助于产生影响。

我不想对Wordpress进行复杂的更改,因为虽然我知道PHP,但我很难改变Wordpress中的代码。

是否有插件或简单的代码更改可以执行此操作?

或者,我想创建一个PHP脚本,该脚本将作为Cron作业运行,从Wordpress源中调整输出,并构建它自己的新源,(a)将缩略图的大小属性附加到全尺寸后图像并将提取物剥离回所需长度。然后,新闻框可以使用该Feed而不是Wordpress。

由于我们很少每天发布一次以上,每隔几个小时更新一次这个Feed应该足够了,或者它确实可以检查最新帖子的日期/时间与饲料燃烧器最后运行的时间。

2 个答案:

答案 0 :(得分:1)

创建缩略图,然后在base64中编码并包含在Feed中。

下面是一个48px x 48px,506字节的缩略图,编码后是714字节。

<img width="48" height="48" src="data:image/gif;base64,R0lGODlhMAAwAKIAADVQkO3w+efq74WXvVpyp8bO3P39/rS+0ywAAAAAMAAwAAAD/hi63P5QyGCCgDjrJY0o17WNpDQA6GCRbCQRwFDAYmtzxikYxgHUt9bFQCDweoBCcEk08gqAg2e1HF1iRwEWWB1hPdoBuFv6SrbkshhcnKY3Yd4L8FbLBae61Yz/6TVaUmA+XH8KE4F3UEqGDSKJYIl6QBKIUVlxfzuVFSEARZ8DcYVBIScAn5swMQMwJ2KkQpWuB6daSUc5AGhVIQE0Wbs/uR67sI6VyROOCro7ckS4xLrHK8rXvoc7J4LBTtMnBFRD08QcHVBruVDdxFri5wPy8/Tyyx4+37k65cV0Fp6ECRS4qcApAh1yxYFGbJc2C6HqyXO1KkaBflA2GSNGyQMgRAISJ+4CCaIfjzwGPn0ipsPju1ZFYrYalsUkFGGuWPqx9Cmmz13PTOaqJRLhUFw8ff6kKbTfAaNH2I25pTQm0KZYFV5KWnVV0KxNE3GtehUsVrEBu3o1G3ZRJ4g9yTJlO00CIZcju5alq7BSy7FK9/KNNIcDXLVAsSlePOeAtcOBV4EAwbjyrYuPIPuc+cNy5ZubHlK1quIgTLWorXampFlmxbipU5MKCKC27dubBmdx8fp2bYQAk2G4lsGzcDKFQgh/dLxRAgA7"/>

使用PHP为您的cron作业创建缩略图:
需要PHP GD扩展。

$newWidth = 48;
$newHeight = 48;
$image = @imagecreatefromgif('/home/user/images/thumb.gif');
$originalWidth  = imagesx($image);
$originalHeight = imagesy($image);
$scale      = min($newWidth/$originalWidth, $newHeight/$originalHeight);
$newWidth  = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
$base64 = base64_encode($newPic);
$thumb = "<img  width=\"$newWidth\" height=\"$newHeight\" src=\"data:image/gif;base64,$base64\" alt =\"thumbnail\"/>";

答案 1 :(得分:-2)

您可以尝试使用此脚本。将其添加到您的wordpress子主题function.php中,不要忘记添加ALT值。非常重要!

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');
    $mime = get_post_mime_type($thumbnail_ID);
    $output = '<enclosure url="'.$thumbnail[0].'" type="'.$mime.'"/>';
    echo $output;
});

function featuredtoRSS($content) {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ){
        $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'alt' 
        => $post-> post_title,'style' => 'float:left; margin:0 15px 15px 0;' ) ) . 
        '' . $content;
    }
    return $content;
}

add_filter('the_excerpt_rss', 'featuredtoRSS');
add_filter('the_content_feed', 'featuredtoRSS');

您可以在my blog上看到结果。