代码基本原理,新建一个自定义分类法“shot”,自动从另一个站点的RSS抓取文章,放在一个数组中,再用这个数组创建“shot”文章,并为文章添加自定义栏目image和link_url,方便调用缩略图和原文链接。
将下面代码添加到当前主题functions.php中即可。
- <?
- /* Post Type
- ------------------------------------------------------------------------------------ */
- add_action( 'init', 'register_cpt_shot' );
- function register_cpt_shot() {
- $labels = array(
- 'name' => _x( 'Dribble Shots', 'shot' ),
- 'singular_name' => _x( 'Dribbble Shot', 'shot' ),
- 'add_new' => _x( 'Add New', 'shot' ),
- 'add_new_item' => _x( 'Add New Dribbble Shot', 'shot' ),
- 'edit_item' => _x( 'Edit Dribbble Shot', 'shot' ),
- 'new_item' => _x( 'New Dribbble Shot', 'shot' ),
- 'view_item' => _x( 'View Dribbble Shot', 'shot' ),
- 'search_items' => _x( 'Search Dribble Shots', 'shot' ),
- 'not_found' => _x( 'No dribble shots found', 'shot' ),
- 'not_found_in_trash' => _x( 'No dribble shots found in Trash', 'shot' ),
- 'parent_item_colon' => _x( 'Parent Dribbble Shot:', 'shot' ),
- 'menu_name' => _x( 'Dribble Shots', 'shot' ),
- );
- $args = array(
- 'labels' => $labels,
- 'hierarchical' => false,
- 'supports' => array( 'title', 'custom-fields' ),
- 'public' => true,
- 'show_ui' => true,
- 'show_in_menu' => true,
- 'show_in_nav_menus' => false,
- 'publicly_queryable' => true,
- 'exclude_from_search' => false,
- 'has_archive' => true,
- 'query_var' => true,
- 'can_export' => true,
- 'rewrite' => true,
- 'capability_type' => 'post'
- );
- register_post_type( 'shot', $args );
- }
- /* Import Shots via RSS
- ------------------------------------------------------------------------------------ */
- // grab the image src from teh description
- function get_image($string) {
- preg_match_all('/<img[^>]+>/i',$string, $result);
- $img = array();
- foreach( $result[0] as $img_tag)
- {
- preg_match_all('/(src)=("[^"]*")/i',$img_tag, $img[$img_tag]);
- }
- return trim($img[$img_tag][2][0], '"');
- }
- // create an array of the feed items
- include_once(ABSPATH . WPINC . '/feed.php');
- $feed = fetch_feed('http://dribbble.com/tammyhart/shots.rss');
- $feed = $feed->get_items(0);
- $shots = array();
- foreach ( $feed as $item ) :
- $shots[$item->get_date('Ymd')] = array(
- 'id' => $item->get_date('Ymd'),
- 'url' => esc_url( $item->get_permalink() ),
- 'date' => $item->get_date('Y-m-d H:i:s'),
- 'title' => esc_html( $item->get_title() ),
- 'image' => get_image($item->get_description())
- );
- endforeach;
- // create posts from our array
- foreach ($shots as $shot) {
- $shot_post = array(
- 'post_type' => 'shot',
- 'post_status' => 'publish',
- 'post_author' => 1,
- 'post_title' => $shot['title'],
- 'post_date' => $shot['date']
- );
- $shot_post_meta = array(
- 'link_url' => $shot['url'],
- 'image' => $shot['image']
- );
- $posts = get_posts(
- array(
- 'post_type' => 'shot',
- 'meta_key' => 'link_url',
- 'meta_value'=> $shot_post_meta['link_url']
- )
- );
- if (count($posts) == 0) {
- $post_id = wp_insert_post($shot_post);
- add_post_meta($post_id, 'link_url', $shot_post_meta['link_url'], true);
- add_post_meta($post_id, 'image', $shot_post_meta['image'], true);
- }
- }
- ?>
修改第66行的”http://dribbble.com/tammyhart/shots.rss“为准备抓取文章站点的RSS地址,还可以修改第80行后的”shot“为你所用主题自定义分类法名称,抓取的文章会自动添加到该分类法中。
上述代码中并没有抓取文章内容的功能,仅供参考学习之用。
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!
我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
江苏省无锡市 1F
类似采集是吧
江苏省苏州市 B1
@ 云落 卧考,这不是云落嘛!!简直是神了
河南省南阳市 B2
@ Win7en乐园 呵呵,碰到熟人了!
江苏省苏州市 B3
@ 明月登楼的博客 是的,很牛逼啊
浙江省杭州市 2F
有了这段代码,不用自己写代码,就能给自己的网站添加这一功能了。
湖北省武汉市 3F
这个相当于采集了?
广西南宁市 4F
有了这个功能,感觉可以聚合一些比较多干货文章的站点资源
广东省广州市 5F
测试一下,合不适我的网站用!
北京市 6F
这是一个邪恶的功能
广东省深圳市 7F
你好,GK
马来西亚 8F
博主确实太厉害了,只能膜拜了!
广东省东莞市 9F
这个可以有哦!
浙江省杭州市 10F
发的郭德纲
浙江省杭州市 11F
ffffffffffffffffffffffffdsfs发的方法是打发
广东省茂名市 12F
这功能不错
浙江省杭州市 13F
安防V的发挥个人与他人色儿
浙江省杭州市 14F
这个功能有点类似如果可以获取到他人网站对应文章链接和文章标题,感觉更神奇(不涉及版权情况下),将同类优质的文章推荐给更多人阅读。。
浙江省杭州市 15F
怎么抓取多个网站的内容?
浙江省杭州市 16F
请问博主,怎样才能像你这个发布文章的时候插入代码块。是wordpress的。
浙江省杭州市 17F
好强大的功能
浙江省杭州市 18F
呵呵 下一个版本 集合到主题里面去
浙江省杭州市 19F
这个方法好。避免使用插件,给网站减轻负担,又能实现功能,挺好的。
浙江省杭州市 20F
持续长
浙江省杭州市 21F
这个厉害了,要是能抓内容,完整版的就更好了
浙江省杭州市 22F
这个功能挺好的,适合聚合内容。如果能多个RSS资源目标一起就好了。
浙江省杭州市 23F
测试一下看看
浙江省杭州市 24F
给力
广东省珠海市 25F
博主的渐显是怎么实现的
浙江省宁波市 26F
有了这个,可以自动化建站了。
陕西省西安市 27F
确实不错。实用