博客改版(站外引用wp最新带图文章)

猿代码 · 2020-03-12 · 571 人浏览

将个人博客从lofter转移到wordpress之后,个人主页的最新博客的源也需要随之更换。从网上搜索相关代码,多数是从rss调取数据源,但是给出的代码都不能筛选带图片的文章。

因为主页上的文章必须要带图片,因此就需要在调取数据时,将不带图的文章排除。除此之外,还有以下几点需求也要满足。

  1. 获取标题、摘要、链接、第一张图片、时间等信息;
  2. 展示最新发表的带图片的前3篇文章;
  3. 图片使用文章中第一张图片;
  4. rss源中形如<content:encoded>的带冒号的标签,若直接在函数中引用会产生 syntax error 语法错误,需要使用children()方法获取子元素信息;
  5. 需将rss源的标准时间格式转换为php的时间格式;
  6. rss源的时间为标准时间,需转换为+8区的北京时间。

经过不断摸索,终于将满足需求的php代码完成。代码如下:

<!--搏浪号imsail.com站外获取wp最新带图文章代码-->
<?php
function blog_list() {
	$url = 'https://t.imsail.com/feed'; //请将网址修改为你的rss源
	$xml = simplexml_load_file( $url );
	$items = $xml->channel->item;
	$pic_count = 0;
	foreach( $items as $item ) {
		if( ! empty( $item ) ) {
			if($pic_count<3) {
				$content = $item->children('content', true)->encoded; //对于rss中带冒号的标签,需使用children()获取子元素信息
				preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $strResult, PREG_PATTERN_ORDER); //判断代码中是否含图片
				$first_img = $strResult[1][0]; //首图赋值
				if(!empty($first_img)) {
					date_default_timezone_set('PRC'); // 设定时间格式为中国时区
					$time=date('Y-m-d H:i:s',strtotime($item->pubDate)); //rss时间格式转换
					echo '<img src="'.$first_img.'" height=100>';
					echo '<li><a href="' . $item->link . '" target="_blank">' . $item->title . '</a>' . $time;
					echo '</br>' . $item->description . '</li>';
					$pic_count = $pic_count+1; //计数
				}
			}
		}
	}
}
?>
<?php blog_list(); ?>
<!--搏浪号imsail.com站外获取wp最新带图文章代码-->

完成后的效果如下图。当然页面的css展现效果还需要您自行调整完善。

原创代码及文章,转载请注明来源。

升级 博客 搬家 wp wordpress
京ICP备2023019113号-1 ◎ Theme by Jasmine