这个想法又是老郑提出的,这件事比较囧,由于我怕网上已经有人已经写过类似的文章,所以搜了一下,居然搜到老郑自己的...不过那个方法是用commentLUV这个插件,此插件并非自动显示,而是需要评论者自己勾选然后手动添加到评论内容中, 所以我就觉得这篇文章可以写了
这个想法又是老郑提出的,这件事比较囧,由于我怕网上已经有人已经写过类似的文章,所以搜了一下,居然搜到老郑自己的...不过那个方法是用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]))//说明能正常访问
在functions.php中找到类似这样的句子
%s'), get_comment_author_link()) ?>
改成
<?php printf(__('<span class="rss"><cite class="fn">%s</cite>'), get_comment_author_link()) ?> <!--这里放下一节的的正式代码完整版本-->
然后加上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="'.%24item->get_link().'">'.$item->get_title().'</a>'.$item->get_date('Y-m-j G:i').'<br>'; } echo '</div>';//如果没有使用第二节的hover效果,此行可去掉 } } } } ?>
wordpress默认对fetch_feed抓取的结果启用12小时的缓存,若要改变此时间,在functions.php中加入以下代码
function new_feed_cache( $seconds ) { return 3600;//单位为秒,3600代表一小时,其他以此类推 } add_filter( 'wp_feed_cache_transient_lifetime' , 'new_feed_cache' );
原文地址:自动获取评论者网站最新文章, 感谢原作者分享。