WordPress采集友链中好友博客最新文章

2015-03-17发布在 Wordpress12558 次访问

share

首先通知一下,料网取消了QQ邮箱订阅料网的更新文章。原因有二:

1)有时候Sam会做一些功能开发和调试,QQ可能会不合适宜地把测试的文章发到所有订阅者的QQ邮箱里。假如你之前QQ邮箱曾收到过一封标题为 ceshi2 的空白订阅邮件,那么就是在这种情况下发生的。

2)我不认为我的每篇文章都有看的价值,如果你喜欢自然会通过各种方法来看。取消订阅推送也是为了增加料网的活跃度。

今天把友情链接改了一下,顺便给友链中有 Gravatar 头像的全显示头像,看上去比文字生动一些。又帮没有注册过Gravatar头像的基友们都注册了一遍头像,完美的打辅助包鸡眼有木有!我真的是友情到位啊。。(PS:Mrhua遛狗照还是帅得抢眼啊!)

另外,发现利用 wordpress的Feed 函数改进一下,可以获取到友链中伙伴们的博客最新posts,这个相当于采集的功能了。

每过24小时检查一次友链博客是否有新文章,并且采集过来显示在这里。 首次载入或者每过24小时更新缓存时,网页的载入会变慢,具体速度和服务器速度以及友情链接的数量有关系。

截图如下:

 

friends-links

 

下面说说如何实现。 wordpress 早期版本后台是支持链接(Links)菜单的,后来从3.5版本开始默认隐藏了这一菜单。我们先把它恢复出来。有两种方式:

代码

在 functions.php 文件中加上一行代码:

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

保存,覆盖wordpress 主题文件下根目录下 functions.php 文件。刷新后台,即可在多媒体下方看到 “链接”(Links)已出现。

插件

后台仪表盘Dashboard“插件” → “安装插件”,然后搜索“Link Manager”,来安装由“WordPress”或“nacin”开发的“Link Manager”插件以启用该功能。 对wordpress文件或代码不太熟悉的用插件会方便一点。 把 Links 重新启用之后,接着把所有的友链好友的链接添加完毕。

 

friends-links3

 

接着在 functions.php 中加上代码:

include_once( ABSPATH . WPINC . '/feed.php' );
function get_feed_posts( $url ){
$cache = get_transient($url);
if ( $cache )
return $cache;
$rss = fetch_feed( $url );
$output = array();
if ( ! is_wp_error( $rss ) ) :
delete_transient($url);
$maxitems = $rss->get_item_quantity( 5 ); //抓取最新5篇文章
$rss_items = $rss->get_items( 0, $maxitems );
foreach ( $rss_items as $item ) {
$output[] = array('title'=>$item->get_title(),'url'=>esc_url( $item->get_permalink() ),'date'=>$item->get_date('c'));
}
set_transient($url,$output,60*60*24);
return $output;
endif;
}

function get_the_link_items_with_posts($id = null){
$bookmarks = get_bookmarks('orderby=date&category=' .$id );
$output = '';
if ( !empty($bookmarks) ) {
$output .= '<div class="friend-posts--wrap fontSmooth">';
foreach ($bookmarks as $bookmark) {
$output .= '<div class="friend-posts"><h4 class="friend-posts-title"><a style="display:block" href="' . $bookmark->link_url . '" title="' . $bookmark->link_description . '" target="_blank" >'. get_avatar($bookmark->link_notes,24) . $bookmark->link_name .'</a></h4>';
$url = $bookmark->link_rss ? $bookmark->link_rss : rtrim($bookmark->link_url,'/') . '/feed/';
$rss_items = get_feed_posts( $url );
if( !empty($rss_items) ) {
$output .= '<ul class="friend-posts-items">';
foreach ($rss_items as $rss_item){
$output .= '<li><a target="_blank" rel="external nofollow" href="'.$rss_item['url'].'">'.$rss_item['title'].'</a></li>';
}
$output .= '</ul>';
}
$output .= '</div>';
}
$output .= '</div>';
}
return $output;
}

function friends_shortcode( $atts, $content = null ) {

extract( shortcode_atts( array(
'cat' => ''
),
$atts ) );

return get_the_link_items_with_posts($cat);

}
add_shortcode('friends', 'friends_shortcode');

对应的CSS样式:

.friend-posts--wrap{letter-spacing:-0.8em}
.friend-posts{margin-top:30px;width:50%;box-sizing:border-box;-webkit-box-sizing:border-box;display:inline-block;letter-spacing:0;vertical-align:top}
.friend-posts:nth-child(2n){padding-left:20px}
.friend-posts-title{border-bottom:1px solid rgba(0,0,0,0.05);color:rgba(0,0,0,0.44);font-size:14px;margin-bottom:8px;padding-bottom:8px}
.friend-posts-title .avatar{border-radius:100%;margin-right:5px;vertical-align:middle;}
.friend-posts-items{font-size:14px;color:rgba(0,0,0,0.6);margin:0;padding:0;line-height:1.8}

使用方法: 在wordpress里新建一个page,然后在编辑器中写入短代码: [friend] (把 friend 换成 friends)

说明:以上的自定义函数里,你可以加上一些条件,比如只抓取特定友链ID的 feed,或者只抓取前几个友链好友的最新posts,善用判断 if 和return。

缺点

加载友情链接页面的速度比以前慢了很多(比较明显),因为要遍历抓取所有好友博客 feed 内容以及读取Gravatar头像,所以难免会耗费一些时间。

如果已经把Gravatar头像本地缓存的话可以加快一些载入速度,但还是会感觉页面加载有些缓慢。

 

分享到微信朋友圈

LiaoSam
LiaoSam
外贸综合症患者

相关文章

    暂无

14条评论

发表我的评论

取消评论

邮箱白名单说明:最近料网自动提醒邮件经常会被一些邮件服务商拦截。为了您顺利并及时地收取留言被回复的提醒邮件,请在您邮箱中把料网 liaosam.com 加入白名单域名。

已读说明
设为私密评论
添加表情

Hi,您需要填写昵称和邮箱!

您的邮箱地址不会公开,仅仅用于收取回复。建议填写QQ邮箱,不宜填写工作邮箱。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (没有就留空)
呃,评论有点多呢... 料网小秘书为您玩命加载中...
  1. #8

    Sam,你好,我觉得你的网站特别漂亮,而且每一篇文章都有一个配图,配图没有水印而且很美,请问这些图片在哪里找到的呢?传到网上都不会被投诉的吗?

    2年前 (2016-02-19)回复
  2. #7

    这个代码?

    3年前 (2015-03-23)回复
    • LiaoSam
      料神Sam,外贸综合症患者。
      @kn007 大发给的那个代码。
      3年前 (2015-03-23)回复
      • @料神Sam 我了解。。。
        话说你源码怎么不排版一下

        3年前 (2015-03-23)回复
        • LiaoSam
          料神Sam,外贸综合症患者。
          @kn007 不知道怎么排版 {一行行排?},也不想用代码高亮插件。
          3年前 (2015-03-23)回复
  3. #6
    melodyding

    那可是萨摩耶???流口水……不懂……

    3年前 (2015-03-20)回复
    • LiaoSam
      料神Sam,外贸综合症患者。
      @melodyding 的确是萨摩耶…… 遛狗帅气照……
      3年前 (2015-03-20)回复
  4. #5

    好技巧 get一个

    3年前 (2015-03-19)回复
  5. #4

    这也可以,厉害啊!

    3年前 (2015-03-18)回复
  6. #3
    san Lee

    Hello 料神,年前我们发了批货去危地马拉,货代帮我查了船已经到港,但是船公司的网站上一直没有更新消息,我们跟客户做的是CIF,货物到港前一个星期付尾款,可是现在船不知道怎么样,客户那边也已经两天没消息了 T T,我应该怎么做,我要疯了T T

    3年前 (2015-03-18)回复
    • LiaoSam
      料神Sam,外贸综合症患者。
      @san Lee 散货还是整柜?如果你货代在危地马拉那边有认识的目的港货代就让货代帮你问问现在货物的情况。如果没有,你赶紧自己网上搜索一个当地的国际货代咨询一下看看。给一些服务费让他们查一下。
      3年前 (2015-03-19)回复
      • san Lee

        @料神Sam 一个20尺的柜,船公司网上的信息显示船已经在15号到港了,但是我的客户还是没有明确告诉我什么时候可以付尾款。他本来是说这个星期初给我们打款的,可是直到今天我们还没收到款,客户答应帮我问一下他老板,可是他一直没有回应。我们现在怕已经产生了滞港费,因为货代说只有7天是免费放在港口上的,现在也不知道开始算了没,因为他说是从客户收到通知那天起算的。现在我的客户去加州出差了,打电话过去都飞去留言了 TT

        3年前 (2015-03-19)回复
  7. #2
    巴比代尔

    这个棒……等着我也用用……嘿嘿……

    3年前 (2015-03-18)回复
  8. #1
    认真思考的阿木

    感谢料神分享,学习了哈

    3年前 (2015-03-18)回复