代码基本原理,新建一个自定义分类法“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://123.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://123.com/tammyhart/shots.rss“为准备抓取文章站点的RSS地址,还可以修改第80行后的”shot“为你所用主题自定义分类法名称,抓取的文章会自动添加到该分类法中。
上述代码中并没有抓取文章内容的功能,仅供参考学习之用。
© 版权声明
1. 资源都是经过站长或作者收集测试修改后发布分享。如若转载请在文内以超链形式注明狐狸库文章出处,谢谢合作!
2. 本站除原创内容,其余所有内容均收集自互联网,仅限用于学习和研究目的,本站不对其内容的合法性承担任何责任。如有版权内容,请通知我们或作者删除,其版权均归原作者所有,本站虽力求保存原有版权信息,但因众多资源经多次转载,已无法确定其真实来源,或已将原有信息丢失,所以敬请原作者谅解!
3. 本站用户所发布的一切资源内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责,若您对本站所载资源作品版权归属存有异议,请留言附说明联系邮箱,我们将在第一时间予以处理 ,同时向您表示歉意!为尊重作者版权,请购买原版作品,支持您喜欢的作者,谢谢!
4. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客如有发现请立即向站长举报;本站资源文件大多存储在云盘,如发现链接或图片失效,请联系作者或站长及时更新。
THE END
请登录后查看评论内容