| 1 | // Register custom post type |
|---|
| 2 | function create_post_type() { |
|---|
| 3 | register_post_type( 'custom_news', |
|---|
| 4 | array( |
|---|
| 5 | 'labels' => array( |
|---|
| 6 | 'name' => __( 'News' ), |
|---|
| 7 | 'singular_name' => __( 'News' ) |
|---|
| 8 | ), |
|---|
| 9 | 'public' => true, |
|---|
| 10 | 'has_archive' => true, |
|---|
| 11 | 'exclude_from_search' => false, |
|---|
| 12 | 'supports' => array('title', 'editor', 'revisions', 'author', 'excerpt', 'thumbnail'), |
|---|
| 13 | 'rewrite' => array('slug' => 'news', 'with_front' => 'false') |
|---|
| 14 | ) |
|---|
| 15 | ); |
|---|
| 16 | |
|---|
| 17 | } |
|---|
| 18 | add_action( 'init', 'create_post_type' ); |
|---|
| 19 | |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | |
|---|
| 24 | // Create custom feed from template |
|---|
| 25 | function create_newsfeed() { |
|---|
| 26 | load_template( TEMPLATEPATH . '/news-feed.php'); |
|---|
| 27 | } |
|---|
| 28 | |
|---|
| 29 | // Replace default feed rewrite rules |
|---|
| 30 | function customise_feed_rules($rules) { |
|---|
| 31 | // Remove all feed related rules |
|---|
| 32 | $filtered_rules = array_filter($rules, function($rule) { |
|---|
| 33 | return !preg_match("/feed/i", $rule); |
|---|
| 34 | }); |
|---|
| 35 | // Add the rule(s) for your custom feed(s) |
|---|
| 36 | $new_rules = array( |
|---|
| 37 | 'feed/newsfeed' => 'index.php?feed=newsfeed' |
|---|
| 38 | ); |
|---|
| 39 | return $new_rules + $filtered_rules; |
|---|
| 40 | } |
|---|
| 41 | |
|---|
| 42 | // Add the custom feed and update rewrite rules |
|---|
| 43 | function add_newsfeed() { |
|---|
| 44 | global $wp_rewrite; |
|---|
| 45 | add_action('do_feed_newsfeed', 'create_newsfeed', 10, 1); |
|---|
| 46 | add_filter('rewrite_rules_array','customise_feed_rules'); |
|---|
| 47 | $wp_rewrite->flush_rules(); |
|---|
| 48 | } |
|---|
| 49 | |
|---|
| 50 | add_action('init', 'add_newsfeed'); |
|---|
| 51 | |
|---|
| 52 | |
|---|