diff --git a/wp-includes/feed-atom-comments.php b/wp-includes/feed-atom-comments.php new file mode 100644 index 000000000..460b8e5b9 --- /dev/null +++ b/wp-includes/feed-atom-comments.php @@ -0,0 +1,91 @@ +'; +?> + +> + <?php + if (is_single() || is_page()) { + printf(__('Comments on: %s'), get_the_title_rss()); + } else { + printf(__('Comments for %s'), get_bloginfo_rss('name')); + } + ?> + + + + WordPress + + + + + +get_results("SELECT comment_ID, comment_author, comment_author_email, + comment_author_url, comment_date, comment_date_gmt, comment_content, comment_post_ID, + $wpdb->posts.ID, $wpdb->posts.post_password FROM $wpdb->comments + LEFT JOIN $wpdb->posts ON comment_post_id = id WHERE comment_post_ID = '" . get_the_ID() . "' + AND $wpdb->comments.comment_approved = '1' AND $wpdb->posts.post_status = 'publish' + AND post_date_gmt < '" . gmdate("Y-m-d H:i:59") . "' + ORDER BY comment_date_gmt ASC" ); + } else { // if no post id passed in, we'll just use the last posts_per_rss comments. + $comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_author_email, + comment_author_url, comment_date, comment_date_gmt, comment_content, comment_post_ID, + $wpdb->posts.ID, $wpdb->posts.post_password FROM $wpdb->comments + LEFT JOIN $wpdb->posts ON comment_post_id = id WHERE $wpdb->posts.post_status = 'publish' + AND $wpdb->comments.comment_approved = '1' AND post_date_gmt < '" . gmdate("Y-m-d H:i:s") . "' + ORDER BY comment_date_gmt DESC LIMIT " . get_option('posts_per_rss') ); + } + + if ($comments) { + foreach ($comments as $comment) { + $GLOBALS['comment'] =& $comment; + get_post_custom($comment->comment_post_ID); +?> + + <?php + if (!(is_single() || is_page())) { + $title = get_the_title($comment->comment_post_ID); + $title = apply_filters('the_title', $title); + $title = apply_filters('the_title_rss', $title); + printf(__('Comment on %1$s by %2$s'), $title, get_comment_author_rss()); + } else { + printf(__('By: %s'), get_comment_author_rss()); + } + ?> + + + + + ' . get_comment_author_url() . ''; ?> + + + + + + + post_password) && $_COOKIE['wp-postpass'] != $comment->post_password) { ?> + ]]> + + ]]> + + + + \ No newline at end of file diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 7ee2c48e5..027c28c6b 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -944,14 +944,21 @@ function do_feed() { // Remove the pad, if present. $feed = preg_replace('/^_+/', '', $feed); - if ($feed == '' || $feed == 'feed') + if ( $feed == '' || $feed == 'feed' ) $feed = 'rss2'; - + $for_comments = false; - if ( 1 != get_query_var('withoutcomments') && ( is_singular() || get_query_var('withcomments') == 1 || $feed == 'comments-rss2' ) ) { - $feed = 'rss2'; - $for_comments = true; - } + + if ( is_singular() || get_query_var('withcomments') == 1 ) + $for_comments = true; + + if ( false !== strpos($feed, 'comments-') ) { + $for_comments = true; + $feed = str_replace('comments-', '', $feed); + } + + if ( get_query_var('withoutcomments') == 1 ) + $for_comments = false; $hook = 'do_feed_' . $feed; do_action($hook, $for_comments); @@ -973,8 +980,12 @@ function do_feed_rss2($for_comments) { } } -function do_feed_atom() { - load_template(ABSPATH . WPINC . '/feed-atom.php'); +function do_feed_atom($for_comments) { + if ($for_comments) { + load_template(ABSPATH . WPINC . '/feed-atom-comments.php'); + } else { + load_template(ABSPATH . WPINC . '/feed-atom.php'); + } } function do_robots() { diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index 42d50f7dc..f9797928c 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -99,6 +99,8 @@ function get_bloginfo($show='') { case 'atom_url': $output = get_feed_link('atom'); break; + case 'comments_atom_url': + $output = get_feed_link('comments_atom'); case 'comments_rss2_url': $output = get_feed_link('comments_rss2'); break;