自动获取评论者网站最新文章

这个想法又是老郑提出的,这件事比较囧,由于我怕网上已经有人已经写过类似的文章,所以搜了一下,居然搜到老郑自己的…不过那个方法是用commentLUV这个插件,此插件并非自动显示,而是需要评论者自己勾选然后手动添加到评论内容中,
所以我就觉得这篇文章可以写了.下图是鼠标移到评论者昵称上的效果:

自动获取评论者网站最新文章

判断网址有效性

CP党和小白白们可以无视这段,直接看二三小节.
这个问题我单独拎出来,用来判断feed地址是否能正常访问,因为如果不能访问,会出现parse_url的WP_ERROR,导致后面的元素都停止加载,解决方法是用PHP的get_headers()函数,如果HTTP返回参数200说明网页能正常访问,代码如下:

$uri='XXX';
$array = get_headers($uri,1); 
if(preg_match('/200/',$array[0]))//说明能正常访问

hover效果

在functions.php中找到类似这样的句子

<?php printf(__(‘<cite class=”fn”>%s</cite>’), get_comment_author_link()) ?>

改成

<?php printf(__('<span class="rss"><cite class="fn">%s</cite>'), get_comment_author_link()) ?>
<!--这里放下一节的的正式代码完整版本--></span>

然后加上css

.comment-author .rss div{display: none;position:absolute;background:#fff;border:1px solid #bbb;padding:10px;top:30px;left:50px}
.comment-author .rss:hover div{display:block}

完整代码

此段代码应该放在comments的Loop内

<?php 
if(current_user_can('level_10')){//只对管理员显示,如果想对所有人显示,请去掉此行和最后一个}
//但是请注意:抓取他站feed会严重拖慢你的网速,尤其是遇到feed无效时,建议只对管理员显示;异步加载大神可无视
	$uri =get_comment_author_url().'/feed';//获取评论者网址,一般而言"网址/feed"是网站feed的地址
	$match1 = '/http/';//无网址游客生成的comment_author_url中没有http
	if( preg_match_all($match1,  $uri, $match) ){//如果填写了网址则开始抓feed					  
		$array = get_headers($uri,1); //判断网址有效性
		if(preg_match('/200/',$array[0])){ //如果网址有效
			$feed = fetch_feed($uri);
			if(! is_wp_error($feed)) { 
				$items = $feed->get_items(0,1); //1可以改成你想抓取的文章数
				echo '<div>';//如果没有使用第二节的hover效果,此行可去掉
				if ( $items == 0 )  {  
           				echo '没有发现文章';
				}
				foreach($items as $item) {
					echo '<a rel="nofollow" target="_blank" href="'.$item->get_link().'">'.$item->get_title().'</a>'.$item->get_date('Y-m-j G:i').'<br>'; 
				}
				echo '</div>';//如果没有使用第二节的hover效果,此行可去掉
			}
		}
	}
}
?>

改变feed缓存

wordpress默认对fetch_feed抓取的结果启用12小时的缓存,若要改变此时间,在functions.php中加入以下代码

function new_feed_cache( $seconds )
{
  return 3600;//单位为秒,3600代表一小时,其他以此类推
}
add_filter( 'wp_feed_cache_transient_lifetime' , 'new_feed_cache' );

LIKE OR SHARE IT:

admin发表于Code目录下,标签为,转载请保留链接

TOP DOWN
发表评论

您必须 [ 登录 ] 才能发表留言!

  1. 沙 发 Android

    沙发 :v5:

    三月 30, 2013 13:04:54
  2. 板 凳 SEO博客

    沙发 :v5: 哦也。。。沙发。。。

    三月 30, 2013 13:05:12
  3. 地 板 Android

    霸气 不解释

    三月 30, 2013 13:05:13
  4. 地 毯 Android

    其实 这个没神马实际意义。。。

    三月 30, 2013 13:06:23
  5. 地 面 xsinger

    霸气插入,没有沙发咯~~低调路过!

    三月 30, 2013 14:08:18
  6. 地 下 大发

    其实有个插件可以导出jsonp数据,适合展示友链的最新文章,然后你就懂了。。

    三月 30, 2013 14:40:59
  7. 7 楼 胡倡萌

    美女就是能折腾 :keai: 不过feed真的很影响页面加载

    三月 30, 2013 15:32:00
  8. 8 楼 刘荣焕

    网站首页ajax能不能实现下一页预加载

    三月 30, 2013 15:46:50
  9. 9 楼 ChoJemmy

    怎么鼠标放头像上没什么反应?还是我放的方式不对?

    三月 30, 2013 18:02:21
  10. 10 楼 跑调的包子

    刚好路过,歇下脚。 :meme:

    三月 30, 2013 19:49:22
  11. 11 楼 郑永

    考虑到有点卡,的确加载缓慢,等待完美版,哈哈。。。就你这篇的震慑,或许有人折腾异步加载,不过你这个原理先收下来,等greader彻底关闭了,用在某个页面上,哈哈。

    三月 30, 2013 20:34:39
  12. 12 楼 郑永

    我觉得那个时间挺关键,可以改成几小时前或则几天前,比较快速判断什么时候文章,这个以后回来探讨,有机会的。

    三月 30, 2013 20:36:12
  13. 13 楼 郑永

    话说wordpress后台评论的那个异步加载网页看起来很爽,速度应该一点都不影响。

    三月 30, 2013 20:37:07
  14. 14 楼 chojemmy

    难道是我网速太慢,没加载上去?欧卖糕

    三月 30, 2013 20:56:54
  15. 15 楼 airoschou

    额,我来看看效果的

    三月 30, 2013 21:59:34
  16. 16 楼 小鬼哥

    曾记得有这么个插件,只不过一直没用。莫非就是博主写的?

    四月 1, 2013 21:19:09
  17. 17 楼 子痕

    不错,真心不错。要是评论框大些,显眼些就好了。

    四月 5, 2013 11:32:44