WordPress.org

Make WordPress Core

Ticket #9510: feed-atom.php

File feed-atom.php, 3.7 KB (added by peaceablewhale, 11 years ago)

Initial attempt to add those features to feed-atom.php

Line 
1<?php
2/**
3 * Atom Feed Template for displaying Atom Posts feed.
4 *
5 * @package WordPress
6 */
7
8function echo_feed_subtitle() {
9        $feed_subtitle=get_bloginfo_rss("description");
10        if(!empty($feed_subtitle)) {
11                echo '<subtitle type="text">'.$feed_subtitle.'</subtitle>'."\n";
12        }
13}
14function get_query_id() {
15        global $wp_query;
16        return $wp_query->get_queried_object_id();
17}
18function echo_atom_feed_links($selfLink,$alternateLink,$repliesLink) {
19        echo '<link rel="self" type="application/atom+xml" href="'.$selfLink.'" />'."\n".'<link rel="alternate" type="text/html" href="'.$alternateLink.'" />'."\n".'<link rel="replies" type="application/atom+xml" href="'.$repliesLink.'" />'."\n";
20}
21
22header('Content-Type: ' . feed_content_type('atom') . '; charset=' . get_option('blog_charset'), true);
23$more = 1;
24$feed_type="atom";
25
26?>
27<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
28<feed
29  xmlns="http://www.w3.org/2005/Atom"
30  xmlns:thr="http://purl.org/syndication/thread/1.0"
31  xml:lang="<?php echo get_option('rss_language'); ?>"
32  xml:base="<?php bloginfo_rss('home') ?>/wp-atom.php"
33  <?php do_action('atom_ns'); ?>
34 >
35        <id><?php bloginfo('atom_url'); ?></id>
36        <title type="text"><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
37<?php
38if(is_category()) {
39        $cat_id=get_query_id();
40        echo_atom_feed_links(get_category_feed_link($cat_id),get_category_link($cat_id),get_category_comments_feed_link($cat_id,$feed_type));
41}
42elseif(is_tag()) {
43        $tag_id=get_query_id();
44        echo_atom_feed_links(get_tag_feed_link($tag_id),get_tag_link($tag_id),get_tag_comments_feed_link($tag_id,$feed_type));
45}
46elseif(is_author()) {
47        $author_id=get_query_id();
48        echo_atom_feed_links(get_author_feed_link($author_id),get_author_posts_url($author_id),get_author_comments_feed_link($author_id,$feed_type));
49}
50elseif(is_date()) {
51        /* To be done */
52}
53elseif(is_search()) {
54        $search_query=get_search_query();
55        echo_atom_feed_links(get_search_feed_link($search_query,$feed_type),get_search_link($search_query),get_search_comments_feed_link($search_query,$feed_type));
56}
57else {
58        echo_feed_subtitle();
59        echo_atom_feed_links(get_bloginfo('atom_url'),get_bloginfo_rss('url').'/',get_bloginfo_rss('comments_atom_url'));
60}?>
61        <?php the_generator( 'atom' ); ?>
62        <?php do_action('atom_head'); ?>
63        <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT')); ?></updated>
64        <?php while (have_posts()) : the_post(); ?>
65        <entry>
66                <author>
67                        <name><?php the_author() ?></name>
68                        <?php $author_url = get_the_author_url(); if ( !empty($author_url) ) : ?>
69                        <uri><?php the_author_url()?></uri>
70                        <?php endif; ?>
71                </author>
72                <title type="<?php html_type_rss(); ?>"><![CDATA[<?php the_title_rss() ?>]]></title>
73                <link rel="alternate" type="text/html" href="<?php the_permalink_rss() ?>" />
74                <id><?php the_guid(); ?></id>
75                <updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
76                <published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
77                <?php the_category_rss($feed_type) ?>
78                <summary type="<?php html_type_rss(); ?>"><![CDATA[<?php the_excerpt_rss(); ?>]]></summary>
79<?php if ( !get_option('rss_use_excerpt') ) : ?>
80                <content type="<?php html_type_rss(); ?>" xml:base="<?php the_permalink_rss() ?>"><![CDATA[<?php the_content('', 0, '') ?>]]></content>
81<?php endif; ?>
82<?php atom_enclosure(); ?>
83<?php do_action('atom_entry'); ?>
84                <link rel="replies" type="text/html" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
85                <link rel="replies" type="application/atom+xml" href="<?php echo get_post_comments_feed_link(0,$feed_type) ?>" thr:count="<?php echo get_comments_number()?>"/>
86                <thr:total><?php echo get_comments_number()?></thr:total>
87        </entry>
88        <?php endwhile ; ?>
89</feed>