如何将PageCookery的内容调用到WordPress

林继 WordPress 2,595 共写了1012个字 (2011-11-02 20:27:51) 没有评论 打印 扫描二维码 百度已收录
  1. <?php
  2. 	require_once (ABSPATH . WPINC . '/class-feed.php');
  3. 	$feed = new SimplePie();
  4. 	$feed->set_feed_url('http://t.linji.cn/rss.xml');
  5. 	$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');//缓存的目录
  6. 	$feed->set_file_class('WP_SimplePie_File');
  7. 	$feed->set_cache_duration(10);//设置缓存时间(10秒),这个各有所好
  8. 	$feed->init();
  9. 	$feed->handle_content_type();
  10. 	$items = $feed->get_items(0,1);//显示最新的1篇文章
  11. 	foreach($items as $item) {
  12. 		echo '<a style="TEXT-DECORATION:none" href="'.$item->get_link().'" target="_blank" title="回复他">'.'<div style="podding:20px;">'.$item->get_description().'</a>'.'</div>';
  13. }
  14. ?>
  15.  
  16. /* 微博 */
  17. .image img {
  18. width: 218px;
  19. height: auto;
  20. }

如代码所示,原理就是应用WP的fetch_feed函数来读取PageCookery微博的RSS内容。操作时,只需将这段代码插入到你的WP模板中即可。当然,有一些调用参数需要自己视情况设定。如:
set_cache_duration(3600); 这一句意思是每隔3600秒读取一次RSS,看是否有内容更新;
get_items(0,1); 这一句的作用是控制显示多少条微博;
echo $item->get_description(); 这一句echo后面写的是希望显示的内容

OK了,完成以上操作后,可以再调整一下样式表,修改为自己喜欢的样式。但要是对所显示的内容不满意,还可以到PageCookery的对应目录中修改cron/rss_update.php文件,来变更RSS的显示内容。
另外,预防在调用中出现“Warning: ./cache/791730c068090a99527392a2d75c1392.spc is not writeable in /home/jcom/public_html/yourtion/wp-includes/class-simplepie.php on line 1780”的错误提示,所以在上面代码中插入如下代码——

  1. $feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');


也可以这样显示:

  1. foreach($items as $item) {
  2.  $title = $item->get_title();
  3.  $link = $item->get_link();
  4.  $time = $item->get_date("Y-m-d h:m");
  5.  echo '<li>'.$title.'<a target="_blank" style="color:#0AA" href="'.$link.'">( '.$time.' )</a></li>' ;
  6. }
  7. echo '</div>';}
  8.  
  9. .weibo_rss li{margin:10px 15px -4px 15px;padding-bottom:6px;word-break:break-all;line-height:20px;border-bottom: 1px solid #ddd}
  10. .weibo_rss li a{ display:inline-block;color:red;}

或者这样显示:

  1.  echo '<div class="weibo_rss"><h3><span>WeiBo</span></h3>';
  2. foreach($items as $item) {
  3.  $title = $item->get_title();
  4.  $link = $item->get_link();
  5.  $time = $item->get_date("Y-m-d h:m");
  6.  echo '<li>'.$title.'<a href="'.$link.'">( '.$time.' )</a></li>' ;
  7. }
  8. echo '</div>';} ?>
  9.  
  10. .weibo_rss li
  11. {
  12. 	margin:10px 15px -4px 15px;
  13. 	padding-bottom:6px;
  14. 	word-break:break-all;
  15. 	line-height:20px;
  16. 	border-bottom: 1px solid #ddd
  17. }
  18. .weibo_rss li a
  19. {
  20. 	display:inline-block;
  21. 	color:red;
  22. }

缓存机制:
SimplePie检查该feed是否已经缓存:
1、如果该feed已经缓存,并且没有过期的话,就使用缓存的feed
2、如果该feed没有缓存,SimplePie就抓取该feed并缓存下来
3、如果该feed已经缓存,但是已经过期(比如上例中已经超过设置的20分 钟),SimplePie就使用HTTPCG技术向feed源发送请求,询问是否有更新:如果有更新,就使用新内容并重新缓存;如果没有更新就使用缓存的内容并重新设置缓存过期时间。

调用的时候可能用到的参数:

$item->get_title() //显示标题
$item->get_link()//显示文章链接
$item->get_author() //显示作者信息
$item->get_date()//显示发布日期
$item->get_description() //显示文章内容

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >